From e4e92abbda91e10af3a091f844bd847eb2b3c469 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 23 Jun 2022 10:41:16 -0700 Subject: [PATCH 001/275] feat(dynatrace): improved look when problems table is empty Signed-off-by: Isaiah Thiessen --- .../src/components/EmptyState/EmptyState.tsx | 41 +++++++++++++++++++ .../src/components/EmptyState/index.ts | 17 ++++++++ .../Problems/ProblemsList/ProblemsList.tsx | 13 +++++- .../Problems/ProblemsTable/ProblemsTable.tsx | 1 - 4 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 plugins/dynatrace/src/components/EmptyState/EmptyState.tsx create mode 100644 plugins/dynatrace/src/components/EmptyState/index.ts diff --git a/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx b/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx new file mode 100644 index 0000000000..ab6eecdb7e --- /dev/null +++ b/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx @@ -0,0 +1,41 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { Grid, Typography } from '@material-ui/core'; +import EmptyStateImage from '../../assets/emptystate.svg'; + +export const EmptyState = ({ message }) => { + return ( + + + {message} + + + EmptyState + + + ); +}; diff --git a/plugins/dynatrace/src/components/EmptyState/index.ts b/plugins/dynatrace/src/components/EmptyState/index.ts new file mode 100644 index 0000000000..0037560be4 --- /dev/null +++ b/plugins/dynatrace/src/components/EmptyState/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { EmptyState } from './EmptyState'; diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index ac69abf93e..9922fb0f67 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -20,6 +20,8 @@ import Alert from '@material-ui/lab/Alert'; import { useApi } from '@backstage/core-plugin-api'; import { ProblemsTable } from '../ProblemsTable'; import { dynatraceApiRef } from '../../../api'; +import { EmptyState } from '../../EmptyState'; +import { InfoCard } from '@backstage/core-components'; type ProblemsListProps = { dynatraceEntityId: string; @@ -38,6 +40,13 @@ export const ProblemsList = (props: ProblemsListProps) => { } else if (error) { return {error.message}; } - if (!problems) return
Nothing to report :)
; - return ; + return ( + + {value?.totalCount ? ( + + ) : ( + + )} + + ); }; diff --git a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx index 8e3d330c37..c04eb62beb 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx @@ -75,7 +75,6 @@ export const ProblemsTable = ({ problems }: ProblemsTableProps) => { return ( { From 3e9b0cbcd95fc1a9c9a38254455ed1e2b43bc9fe Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 23 Jun 2022 12:45:17 -0700 Subject: [PATCH 002/275] feat: pass down dynatraceBaseUrl as prop Signed-off-by: Isaiah Thiessen --- .../Problems/ProblemsList/ProblemsList.tsx | 17 ++++++++++++++--- .../Problems/ProblemsTable/ProblemsTable.tsx | 8 +++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index 9922fb0f67..fa49ef91d1 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -25,10 +25,11 @@ import { InfoCard } from '@backstage/core-components'; type ProblemsListProps = { dynatraceEntityId: string; + dynatraceBaseUrl: string; }; export const ProblemsList = (props: ProblemsListProps) => { - const { dynatraceEntityId } = props; + const { dynatraceEntityId, dynatraceBaseUrl } = props; const dynatraceApi = useApi(dynatraceApiRef); const { value, loading, error } = useAsync(async () => { return dynatraceApi.getDynatraceProblems(dynatraceEntityId); @@ -41,9 +42,19 @@ export const ProblemsList = (props: ProblemsListProps) => { return {error.message}; } return ( - + {value?.totalCount ? ( - + ) : ( )} diff --git a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx index c04eb62beb..a9c474d863 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx @@ -17,17 +17,15 @@ import React from 'react'; import { Table, TableColumn } from '@backstage/core-components'; import { DynatraceProblem } from '../../../api/DynatraceApi'; import { ProblemStatus } from '../ProblemStatus'; -import { configApiRef } from '@backstage/core-plugin-api'; -import { useApi } from '@backstage/core-plugin-api'; import { Link } from '@material-ui/core'; type ProblemsTableProps = { problems: DynatraceProblem[]; + dynatraceBaseUrl: string; }; -export const ProblemsTable = ({ problems }: ProblemsTableProps) => { - const configApi = useApi(configApiRef); - const dynatraceBaseUrl = configApi.getString('dynatrace.baseUrl'); +export const ProblemsTable = (props: ProblemsTableProps) => { + const { problems, dynatraceBaseUrl } = props; const columns: TableColumn[] = [ { title: 'Title', From 4e34828773234749fc9fbee91353dee2928e6cf7 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 23 Jun 2022 12:46:27 -0700 Subject: [PATCH 003/275] feat(dynatrace): add view recent synthetic monitor activity Signed-off-by: Isaiah Thiessen --- microsite/data/plugins/dynatrace.yaml | 2 +- plugins/dynatrace/src/api/DynatraceApi.ts | 20 +++++ plugins/dynatrace/src/api/DynatraceClient.ts | 18 +++- plugins/dynatrace/src/assets/emptystate.svg | 1 + .../components/DynatraceTab/DynatraceTab.tsx | 35 ++++++-- .../components/EmptyState/EmptyState.test.tsx | 15 ++++ .../SyntheticsCard/SyntheticsCard.test.tsx | 18 ++++ .../SyntheticsCard/SyntheticsCard.tsx | 85 +++++++++++++++++++ .../Synthetics/SyntheticsCard/index.ts | 16 ++++ plugins/dynatrace/src/constants.ts | 2 + 10 files changed, 200 insertions(+), 12 deletions(-) create mode 100644 plugins/dynatrace/src/assets/emptystate.svg create mode 100644 plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx create mode 100644 plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx create mode 100644 plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx create mode 100644 plugins/dynatrace/src/components/Synthetics/SyntheticsCard/index.ts diff --git a/microsite/data/plugins/dynatrace.yaml b/microsite/data/plugins/dynatrace.yaml index 3ab85ae1eb..f204c4105c 100644 --- a/microsite/data/plugins/dynatrace.yaml +++ b/microsite/data/plugins/dynatrace.yaml @@ -3,7 +3,7 @@ title: Dynatrace author: TELUS authorUrl: https://github.com/telus category: Monitoring -description: View monitoring info from dynatrace for services in your software catalog. +description: View monitoring info from Dynatrace for services in your software catalog. documentation: https://github.com/backstage/backstage/tree/master/plugins/dynatrace iconUrl: img/dynatrace.svg npmPackageName: '@backstage/plugin-dynatrace' diff --git a/plugins/dynatrace/src/api/DynatraceApi.ts b/plugins/dynatrace/src/api/DynatraceApi.ts index 1865b20363..8993860e61 100644 --- a/plugins/dynatrace/src/api/DynatraceApi.ts +++ b/plugins/dynatrace/src/api/DynatraceApi.ts @@ -35,8 +35,25 @@ export type DynatraceProblem = { affectedEntities: Array; }; +type SyntheticRequestResults = { + startTimestamp: number; +}; + +export type DynatraceSyntheticResults = { + monitorId: string; + locationsExecutionResults: [ + { + locationId: number; + executionId: string; + requestResults: Array; + }, + ]; +}; + export interface DynatraceProblems { problems: Array; + totalCount: number; + pageSize: number; } export const dynatraceApiRef = createApiRef({ @@ -47,4 +64,7 @@ export type DynatraceApi = { getDynatraceProblems( dynatraceEntityId: string, ): Promise; + getDynatraceSyntheticFailures( + syntheticId: string, + ): Promise; }; diff --git a/plugins/dynatrace/src/api/DynatraceClient.ts b/plugins/dynatrace/src/api/DynatraceClient.ts index 27476ddbac..728f94de7b 100644 --- a/plugins/dynatrace/src/api/DynatraceClient.ts +++ b/plugins/dynatrace/src/api/DynatraceClient.ts @@ -13,7 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { DynatraceProblems, DynatraceApi } from './DynatraceApi'; +import { + DynatraceProblems, + DynatraceApi, + DynatraceSyntheticResults, +} from './DynatraceApi'; import { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'; export class DynatraceClient implements DynatraceApi { @@ -52,11 +56,21 @@ export class DynatraceClient implements DynatraceApi { ); } + async getDynatraceSyntheticFailures( + syntheticId: string, + ): Promise { + if (!syntheticId) { + throw new Error('Dynatrace synthetic Id is required'); + } + + return this.callApi(`synthetic/execution/${syntheticId}/FAILED`, {}); + } + async getDynatraceProblems( dynatraceEntityId: string, ): Promise { if (!dynatraceEntityId) { - throw new Error('Dynatrace entity ID is required'); + throw new Error('Dynatrace entity Id is required'); } return this.callApi('problems', { diff --git a/plugins/dynatrace/src/assets/emptystate.svg b/plugins/dynatrace/src/assets/emptystate.svg new file mode 100644 index 0000000000..8a0490727f --- /dev/null +++ b/plugins/dynatrace/src/assets/emptystate.svg @@ -0,0 +1 @@ + diff --git a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx index c284eaba0f..071fc5d256 100644 --- a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx +++ b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx @@ -18,18 +18,24 @@ import { Grid } from '@material-ui/core'; import { Page, Content, - ContentHeader, - SupportButton, MissingAnnotationEmptyState, } from '@backstage/core-components'; import { useEntity } from '@backstage/plugin-catalog-react'; +import { useApi, configApiRef } from '@backstage/core-plugin-api'; import { ProblemsList } from '../Problems/ProblemsList'; +import { SyntheticsCard } from '../Synthetics/SyntheticsCard'; import { isDynatraceAvailable } from '../../plugin'; -import { DYNATRACE_ID_ANNOTATION } from '../../constants'; +import { + DYNATRACE_ID_ANNOTATION, + DYNATRACE_SYNTHETICS_ANNOTATION, +} from '../../constants'; export const DynatraceTab = () => { const { entity } = useEntity(); + const configApi = useApi(configApiRef); + const dynatraceBaseUrl = configApi.getString('dynatrace.baseUrl'); + if (!isDynatraceAvailable(entity)) { return ; } @@ -37,18 +43,29 @@ export const DynatraceTab = () => { const dynatraceEntityId: string = entity?.metadata.annotations?.[DYNATRACE_ID_ANNOTATION]!; + const syntheticsIds: string = + entity?.metadata.annotations?.[DYNATRACE_SYNTHETICS_ANNOTATION]!; + return ( - - - Plugin to show information from Dynatrace - - - + + {syntheticsIds ? ( + + + + ) : ( + <> + )} diff --git a/plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx b/plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx new file mode 100644 index 0000000000..b61d59e88d --- /dev/null +++ b/plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx @@ -0,0 +1,15 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx new file mode 100644 index 0000000000..89f10c5750 --- /dev/null +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx @@ -0,0 +1,18 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +describe('SyntheticsCard', () => {}); diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx new file mode 100644 index 0000000000..491a752b09 --- /dev/null +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx @@ -0,0 +1,85 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import useAsync from 'react-use/lib/useAsync'; +import { Progress } from '@backstage/core-components'; +import Alert from '@material-ui/lab/Alert'; +import { InfoCard } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; +import { Typography } from '@material-ui/core'; +import { dynatraceApiRef } from '../../../api'; + +type SyntheticsCardProps = { + syntheticsIds: string; + dynatraceBaseUrl: string; +}; + +const dynatraceMonitorPrefixes = (idPrefix: string): string => { + switch (idPrefix) { + case 'HTTP_CHECK': + return 'ui/http-monitor'; + case 'BROWSER_MONITOR': + return 'ui/browser-monitor'; + case 'SYNTHETIC_TEST': + return 'ui/browser-monitor'; + default: + throw new Error('Invalid synthetic Id'); + } +}; + +export const SyntheticsCard = (props: SyntheticsCardProps) => { + const { syntheticsIds, dynatraceBaseUrl } = props; + const dynatraceApi = useApi(dynatraceApiRef); + const { value, loading, error } = useAsync(async () => { + return dynatraceApi.getDynatraceSyntheticFailures(syntheticsIds); + }, [dynatraceApi, syntheticsIds]); + + if (loading) { + return ; + } else if (error) { + return {error.message}; + } + + const deepLinkPrefix = dynatraceMonitorPrefixes( + `${syntheticsIds.match(/(.+)-/)![1]}`, + ); + const timestamps = value?.locationsExecutionResults.map(l => { + return l.requestResults[0].startTimestamp; + }); + + return ( + + + Locations: {JSON.stringify(value?.locationsExecutionResults.length)} + + + Last Failures:{' '} + {JSON.stringify( + timestamps?.map(t => { + return new Date(t).toString(); + }), + )} + + + ); +}; diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/index.ts b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/index.ts new file mode 100644 index 0000000000..5284e0cfab --- /dev/null +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SyntheticsCard } from './SyntheticsCard'; diff --git a/plugins/dynatrace/src/constants.ts b/plugins/dynatrace/src/constants.ts index 21453e0338..8f504db1f4 100644 --- a/plugins/dynatrace/src/constants.ts +++ b/plugins/dynatrace/src/constants.ts @@ -14,3 +14,5 @@ * limitations under the License. */ export const DYNATRACE_ID_ANNOTATION = 'dynatrace.com/dynatrace-entity-id'; +export const DYNATRACE_SYNTHETICS_ANNOTATION = + 'dynatrace.com/dynatrace-synthetics-ids'; From 10db751ed4356e894436401607723538e8cce51c Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Wed, 29 Jun 2022 14:26:53 -0700 Subject: [PATCH 004/275] fix: use toLocaleString in ProblemsTable Signed-off-by: Isaiah Thiessen --- .../src/components/Problems/ProblemsTable/ProblemsTable.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx index a9c474d863..41470959db 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.tsx @@ -61,13 +61,15 @@ export const ProblemsTable = (props: ProblemsTableProps) => { title: 'Start Time', field: 'startTime', render: (row: Partial) => - new Date(row.startTime || 0).toString(), + new Date(row.startTime || 0).toLocaleString(), }, { title: 'End Time', field: 'endTime', render: (row: Partial) => - row.endTime === -1 ? 'ongoing' : new Date(row.endTime || 0).toString(), + row.endTime === -1 + ? 'ongoing' + : new Date(row.endTime || 0).toLocaleString(), }, ]; From 4224a43e1c0031c11a60000cdc3a60f129e0e4ca Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Wed, 29 Jun 2022 14:27:36 -0700 Subject: [PATCH 005/275] feat: prettier SyntheticsCard Signed-off-by: Isaiah Thiessen --- plugins/dynatrace/src/api/DynatraceApi.ts | 16 +++- plugins/dynatrace/src/api/DynatraceClient.ts | 19 ++++- .../components/DynatraceTab/DynatraceTab.tsx | 2 +- .../SyntheticsCard/SyntheticsCard.tsx | 43 +++++----- .../SyntheticsLocation.test.tsx | 18 ++++ .../SyntheticsLocation/SyntheticsLocation.tsx | 82 +++++++++++++++++++ .../Synthetics/SyntheticsLocation/index.ts | 16 ++++ 7 files changed, 167 insertions(+), 29 deletions(-) create mode 100644 plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx create mode 100644 plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx create mode 100644 plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/index.ts diff --git a/plugins/dynatrace/src/api/DynatraceApi.ts b/plugins/dynatrace/src/api/DynatraceApi.ts index 8993860e61..4cb5f105bf 100644 --- a/plugins/dynatrace/src/api/DynatraceApi.ts +++ b/plugins/dynatrace/src/api/DynatraceApi.ts @@ -39,7 +39,7 @@ type SyntheticRequestResults = { startTimestamp: number; }; -export type DynatraceSyntheticResults = { +export interface DynatraceSyntheticResults { monitorId: string; locationsExecutionResults: [ { @@ -48,7 +48,14 @@ export type DynatraceSyntheticResults = { requestResults: Array; }, ]; -}; +} + +export interface DynatraceSyntheticLocationInfo { + entityId: string; + name: string; + city: string; + browserType: string; +} export interface DynatraceProblems { problems: Array; @@ -65,6 +72,9 @@ export type DynatraceApi = { dynatraceEntityId: string, ): Promise; getDynatraceSyntheticFailures( - syntheticId: string, + syntheticsId: string, ): Promise; + getDynatraceSyntheticLocationInfo( + syntheticLocationId: string, + ): Promise; }; diff --git a/plugins/dynatrace/src/api/DynatraceClient.ts b/plugins/dynatrace/src/api/DynatraceClient.ts index 728f94de7b..1aabd3fb6d 100644 --- a/plugins/dynatrace/src/api/DynatraceClient.ts +++ b/plugins/dynatrace/src/api/DynatraceClient.ts @@ -17,6 +17,7 @@ import { DynatraceProblems, DynatraceApi, DynatraceSyntheticResults, + DynatraceSyntheticLocationInfo, } from './DynatraceApi'; import { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'; @@ -57,13 +58,23 @@ export class DynatraceClient implements DynatraceApi { } async getDynatraceSyntheticFailures( - syntheticId: string, + syntheticsId: string, ): Promise { - if (!syntheticId) { - throw new Error('Dynatrace synthetic Id is required'); + if (!syntheticsId) { + throw new Error('Dynatrace syntheticId is required'); } - return this.callApi(`synthetic/execution/${syntheticId}/FAILED`, {}); + return this.callApi(`synthetic/execution/${syntheticsId}/FAILED`, {}); + } + + async getDynatraceSyntheticLocationInfo( + syntheticLocationId: string, + ): Promise { + if (!syntheticLocationId) { + throw new Error('Dynatrace syntheticLocationId is required'); + } + + return this.callApi(`synthetic/locations/${syntheticLocationId}`, {}); } async getDynatraceProblems( diff --git a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx index 071fc5d256..1be005908f 100644 --- a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx +++ b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx @@ -59,7 +59,7 @@ export const DynatraceTab = () => { {syntheticsIds ? ( diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx index 491a752b09..3a77db3d50 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx @@ -19,11 +19,11 @@ import { Progress } from '@backstage/core-components'; import Alert from '@material-ui/lab/Alert'; import { InfoCard } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; -import { Typography } from '@material-ui/core'; import { dynatraceApiRef } from '../../../api'; +import { SyntheticsLocation } from '../SyntheticsLocation'; type SyntheticsCardProps = { - syntheticsIds: string; + syntheticsId: string; dynatraceBaseUrl: string; }; @@ -41,11 +41,11 @@ const dynatraceMonitorPrefixes = (idPrefix: string): string => { }; export const SyntheticsCard = (props: SyntheticsCardProps) => { - const { syntheticsIds, dynatraceBaseUrl } = props; + const { syntheticsId, dynatraceBaseUrl } = props; const dynatraceApi = useApi(dynatraceApiRef); const { value, loading, error } = useAsync(async () => { - return dynatraceApi.getDynatraceSyntheticFailures(syntheticsIds); - }, [dynatraceApi, syntheticsIds]); + return dynatraceApi.getDynatraceSyntheticFailures(syntheticsId); + }, [dynatraceApi, syntheticsId]); if (loading) { return ; @@ -54,32 +54,33 @@ export const SyntheticsCard = (props: SyntheticsCardProps) => { } const deepLinkPrefix = dynatraceMonitorPrefixes( - `${syntheticsIds.match(/(.+)-/)![1]}`, + `${syntheticsId.match(/(.+)-/)![1]}`, ); - const timestamps = value?.locationsExecutionResults.map(l => { - return l.requestResults[0].startTimestamp; + const lastFailed = value?.locationsExecutionResults.map(l => { + return { + timestamp: l.requestResults[0].startTimestamp, + location: Number(l.locationId).toString(16), + }; }); return ( - - Locations: {JSON.stringify(value?.locationsExecutionResults.length)} - - - Last Failures:{' '} - {JSON.stringify( - timestamps?.map(t => { - return new Date(t).toString(); - }), - )} - + {lastFailed?.map(l => { + return ( + + ); + })} ); }; diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx new file mode 100644 index 0000000000..0fa1a148e9 --- /dev/null +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx @@ -0,0 +1,18 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +describe('SyntheticsLocation', () => {}); diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx new file mode 100644 index 0000000000..957f1c34f5 --- /dev/null +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx @@ -0,0 +1,82 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import useAsync from 'react-use/lib/useAsync'; +import { Progress } from '@backstage/core-components'; +import Alert from '@material-ui/lab/Alert'; +import { useApi } from '@backstage/core-plugin-api'; +import { Chip } from '@material-ui/core'; +import { dynatraceApiRef } from '../../../api'; + +type SyntheticsLocationProps = { + lastFailedTimestamp: Date; + locationId: string; + key: string; +}; + +const failedInLast24Hours = (timestamp: Date): Boolean => { + return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60 * 24); +}; + +const failedInLast6Hours = (timestamp: Date): Boolean => { + return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60 * 6); +}; + +const failedinLastHour = (timestamp: Date): Boolean => { + return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60); +}; + +const chipColor = (timestamp: Date): string => { + if (failedinLastHour(timestamp)) { + return 'salmon'; + } + if (failedInLast6Hours(timestamp)) { + return 'sandybrown'; + } + if (failedInLast24Hours(timestamp)) { + return 'palegoldenrod'; + } + return 'lightgreen'; +}; + +export const SyntheticsLocation = (props: SyntheticsLocationProps) => { + const { lastFailedTimestamp, locationId } = props; + const dynatraceApi = useApi(dynatraceApiRef); + const { value, loading, error } = useAsync(async () => { + return dynatraceApi.getDynatraceSyntheticLocationInfo( + `SYNTHETIC_LOCATION-00000000000000${locationId}`, + ); + }); + + if (loading) { + return ; + } else if (error) { + return {error.message}; + } + + return ( + + ); +}; diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/index.ts b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/index.ts new file mode 100644 index 0000000000..1dc8a783fe --- /dev/null +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { SyntheticsLocation } from './SyntheticsLocation'; From 91d816d7ab23fc92d2e75509a781cc0eb98ae956 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Wed, 29 Jun 2022 14:40:00 -0700 Subject: [PATCH 006/275] feat: show dynatrace entity id in card subtitle Signed-off-by: Isaiah Thiessen --- .../src/components/Problems/ProblemsList/ProblemsList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index fa49ef91d1..6a6ade9520 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -44,7 +44,7 @@ export const ProblemsList = (props: ProblemsListProps) => { return ( Date: Wed, 20 Jul 2022 10:17:25 +0200 Subject: [PATCH 007/275] fix(ldap): search stream does not await callbacks Signed-off-by: Antonio Musolino --- .changeset/slimy-zebras-reply.md | 5 +++++ plugins/catalog-backend-module-ldap/api-report.md | 2 +- plugins/catalog-backend-module-ldap/src/ldap/client.ts | 9 ++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 .changeset/slimy-zebras-reply.md diff --git a/.changeset/slimy-zebras-reply.md b/.changeset/slimy-zebras-reply.md new file mode 100644 index 0000000000..5b309f5129 --- /dev/null +++ b/.changeset/slimy-zebras-reply.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-ldap': patch +--- + +Now the `searchStream` method in LDAP client awaits the callbacks diff --git a/plugins/catalog-backend-module-ldap/api-report.md b/plugins/catalog-backend-module-ldap/api-report.md index 90e58b3fb2..9876c163e8 100644 --- a/plugins/catalog-backend-module-ldap/api-report.md +++ b/plugins/catalog-backend-module-ldap/api-report.md @@ -90,7 +90,7 @@ export class LdapClient { searchStreaming( dn: string, options: SearchOptions, - f: (entry: SearchEntry) => void, + f: (entry: SearchEntry) => Promise | void, ): Promise; } diff --git a/plugins/catalog-backend-module-ldap/src/ldap/client.ts b/plugins/catalog-backend-module-ldap/src/ldap/client.ts index d9d0faf9a2..d5f6a7d0f6 100644 --- a/plugins/catalog-backend-module-ldap/src/ldap/client.ts +++ b/plugins/catalog-backend-module-ldap/src/ldap/client.ts @@ -147,9 +147,10 @@ export class LdapClient { async searchStreaming( dn: string, options: SearchOptions, - f: (entry: SearchEntry) => void, + f: (entry: SearchEntry) => Promise | void, ): Promise { try { + const awaitList: Array | void> = []; return await new Promise((resolve, reject) => { // Note that we clone the (frozen) options, since ldapjs rudely tries to // overwrite parts of them @@ -163,7 +164,7 @@ export class LdapClient { }); res.on('searchEntry', entry => { - f(entry); + awaitList.push(f(entry)); }); res.on('error', e => { @@ -176,7 +177,9 @@ export class LdapClient { } else if (r.status !== 0) { throw new Error(`Got status ${r.status}: ${r.errorMessage}`); } else { - resolve(); + Promise.all(awaitList) + .then(() => resolve()) + .catch(reject); } }); }); From 5097e540874f573e5dcccc1173e15774d0592758 Mon Sep 17 00:00:00 2001 From: Antonio Musolino Date: Wed, 20 Jul 2022 14:26:11 +0200 Subject: [PATCH 008/275] fix(ldap): added manual paging with pause in searchStreaming to limit memory usage Signed-off-by: Antonio Musolino --- .../src/ldap/client.ts | 75 +++++++++++-------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/plugins/catalog-backend-module-ldap/src/ldap/client.ts b/plugins/catalog-backend-module-ldap/src/ldap/client.ts index d5f6a7d0f6..d182875e10 100644 --- a/plugins/catalog-backend-module-ldap/src/ldap/client.ts +++ b/plugins/catalog-backend-module-ldap/src/ldap/client.ts @@ -16,7 +16,7 @@ import { ForwardedError } from '@backstage/errors'; import ldap, { Client, SearchEntry, SearchOptions } from 'ldapjs'; -import { cloneDeep } from 'lodash'; +import { cloneDeep, merge } from 'lodash'; import { Logger } from 'winston'; import { BindConfig, TLSConfig } from './config'; import { errorString } from './util'; @@ -150,39 +150,54 @@ export class LdapClient { f: (entry: SearchEntry) => Promise | void, ): Promise { try { - const awaitList: Array | void> = []; + let awaitList: Array | void> = []; return await new Promise((resolve, reject) => { // Note that we clone the (frozen) options, since ldapjs rudely tries to // overwrite parts of them - this.client.search(dn, cloneDeep(options), (err, res) => { - if (err) { - reject(new Error(errorString(err))); - } - - res.on('searchReference', () => { - this.logger.warn('Received unsupported search referral'); - }); - - res.on('searchEntry', entry => { - awaitList.push(f(entry)); - }); - - res.on('error', e => { - reject(new Error(errorString(e))); - }); - - res.on('end', r => { - if (!r) { - throw new Error('Null response'); - } else if (r.status !== 0) { - throw new Error(`Got status ${r.status}: ${r.errorMessage}`); - } else { - Promise.all(awaitList) - .then(() => resolve()) - .catch(reject); + this.client.search( + dn, + merge(cloneDeep(options), { paged: { pagePause: true } }), + (err, res) => { + if (err) { + reject(new Error(errorString(err))); } - }); - }); + + res.on('searchReference', () => { + this.logger.warn('Received unsupported search referral'); + }); + + res.on('searchEntry', entry => { + awaitList.push(f(entry)); + }); + + res.on('page', (_, cb) => { + // awaits completion before fetching next page + Promise.all(awaitList) + .then(() => { + // flush list + awaitList = []; + if (cb) cb(); + }) + .catch(reject); + }); + + res.on('error', e => { + reject(new Error(errorString(e))); + }); + + res.on('end', r => { + if (!r) { + throw new Error('Null response'); + } else if (r.status !== 0) { + throw new Error(`Got status ${r.status}: ${r.errorMessage}`); + } else { + Promise.all(awaitList) + .then(() => resolve()) + .catch(reject); + } + }); + }, + ); }); } catch (e) { throw new ForwardedError(`LDAP search at DN "${dn}" failed`, e); From 71b7a4c82278cf64c3d2dacf8335da2bb2985523 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 21 Jul 2022 15:22:15 -0700 Subject: [PATCH 009/275] feat: support multiple synthetic ids Signed-off-by: Isaiah Thiessen --- .../components/DynatraceTab/DynatraceTab.tsx | 23 +++++++++++-------- .../SyntheticsCard/SyntheticsCard.tsx | 3 ++- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx index 1be005908f..3e137f4109 100644 --- a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx +++ b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx @@ -56,16 +56,19 @@ export const DynatraceTab = () => { dynatraceBaseUrl={dynatraceBaseUrl} /> - {syntheticsIds ? ( - - - - ) : ( - <> - )} + {syntheticsIds + .replace(' ', '') + .split(',') + .map(id => { + return ( + + + + ); + })} diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx index 3a77db3d50..1b73e51313 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx @@ -56,6 +56,7 @@ export const SyntheticsCard = (props: SyntheticsCardProps) => { const deepLinkPrefix = dynatraceMonitorPrefixes( `${syntheticsId.match(/(.+)-/)![1]}`, ); + const lastFailed = value?.locationsExecutionResults.map(l => { return { timestamp: l.requestResults[0].startTimestamp, @@ -68,7 +69,7 @@ export const SyntheticsCard = (props: SyntheticsCardProps) => { title="Synthetics" subheader={`Recent Activity for Monitor ${syntheticsId}`} deepLink={{ - title: 'View Synthetics in Dynatrace', + title: 'View this Synthetic in Dynatrace', link: `${dynatraceBaseUrl}/${deepLinkPrefix}/${syntheticsId}`, }} > From e44c0b3811e1df2bdd2c0d0755b713262876c5b9 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 4 Aug 2022 10:28:43 -0700 Subject: [PATCH 010/275] feat: unit tests for Synthetics Card, update ProblemsList tests Signed-off-by: Isaiah Thiessen --- .changeset/fresh-rabbits-juggle.md | 9 ++++ plugins/dynatrace/README.md | 19 +++++++ .../components/EmptyState/EmptyState.test.tsx | 15 ------ .../src/components/EmptyState/EmptyState.tsx | 7 ++- .../ProblemsList/ProblemsList.test.tsx | 14 ++++-- .../Problems/ProblemsList/ProblemsList.tsx | 20 +++++--- .../ProblemsTable/ProblemsTable.test.tsx | 12 +---- .../SyntheticsCard/SyntheticsCard.test.tsx | 40 ++++++++++++++- .../SyntheticsLocation.test.tsx | 49 ++++++++++++++++++- .../SyntheticsLocation/SyntheticsLocation.tsx | 24 ++++----- plugins/dynatrace/src/mocks/problems.json | 2 +- 11 files changed, 155 insertions(+), 56 deletions(-) create mode 100644 .changeset/fresh-rabbits-juggle.md delete mode 100644 plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx diff --git a/.changeset/fresh-rabbits-juggle.md b/.changeset/fresh-rabbits-juggle.md new file mode 100644 index 0000000000..804ae70853 --- /dev/null +++ b/.changeset/fresh-rabbits-juggle.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-dynatrace': minor +--- + +New features: + +- Some visual improvements to the table that displays Problems +- Added support for viewing recent Synthetics results using +- Added some additional linking to the configured Dynatrace instance diff --git a/plugins/dynatrace/README.md b/plugins/dynatrace/README.md index 150c9768af..2f5d30b88a 100644 --- a/plugins/dynatrace/README.md +++ b/plugins/dynatrace/README.md @@ -38,6 +38,8 @@ dynatrace: #### Catalog Configuration +##### View Recent Application Problems + To show information from Dynatrace for a catalog entity, add the following annotation to `catalog-info.yaml`: ```yaml @@ -51,6 +53,23 @@ metadata: The `DYNATRACE_ENTITY_ID` can be found in Dynatrace by browsing to the entity (a service, synthetic, frontend, workload, etc.). It will be located in the browser address bar in the `id` parameter and has the format `ENTITY_TYPE-ENTITY_ID`, where `ENTITY_TYPE` will be one of `SERVICE`, `SYNTHETIC_TEST`, or other, and `ENTITY_ID` will be a string of characters containing uppercase letters and numbers. +##### Viewing Recent Synthetics Results + +To show recent results from a Synthetic Monitor, add the following annotation to `catalog-info.yaml`: + +```yaml +# catalog-info.yaml +# [...] +metadata: + annotations: + dynatrace.com/dynatrace-synthetics-ids: SYNTHETIC_ID, SYNTHETIC_ID_2, ... +# [...] +``` + +The annotation can also contain a comma separated list of Synthetic Ids to surface details for multiple monitors! + +The `SYNTHETIC_ID` can be found in Dynatrace by browsing to the Synthetic monitor. It will be located in the browser address bar in the resource path - `https://example.dynatrace.com/ui/http-monitor/HTTP_CHECK-1234` for an Http check, or `https://example.dynatrace.com/ui/browser-monitor/SYNTHETIC_TEST-1234` for a browser clickpath. + ## Disclaimer This plugin is not officially supported by Dynatrace. diff --git a/plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx b/plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx deleted file mode 100644 index b61d59e88d..0000000000 --- a/plugins/dynatrace/src/components/EmptyState/EmptyState.test.tsx +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ diff --git a/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx b/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx index ab6eecdb7e..87d0099499 100644 --- a/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx +++ b/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx @@ -17,7 +17,12 @@ import React from 'react'; import { Grid, Typography } from '@material-ui/core'; import EmptyStateImage from '../../assets/emptystate.svg'; -export const EmptyState = ({ message }) => { +type EmptyStateProps = { + message: string; +}; + +export const EmptyState = (props: EmptyStateProps) => { + const { message } = props; return ( { .mockResolvedValue({ problems }); const rendered = await renderInTestApp( - + , ); expect(await rendered.findByText('example-service')).toBeInTheDocument(); }); - it('renders "nothing to report :)" if no problems are found', async () => { + it('returns "No Problems to Report!" if no problems are found', async () => { mockDynatraceApi.getDynatraceProblems = jest.fn().mockResolvedValue({}); const rendered = await renderInTestApp( - + , ); expect( - await rendered.findByText('Nothing to report :)'), + await rendered.findByText('No Problems to Report!'), ).toBeInTheDocument(); }); }); diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index 6a6ade9520..17ab1842e9 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -28,6 +28,17 @@ type ProblemsListProps = { dynatraceBaseUrl: string; }; +const cardContents = (problems: Array, dynatraceBaseUrl: string) => { + return problems?.length ? ( + + ) : ( + + ); +}; + export const ProblemsList = (props: ProblemsListProps) => { const { dynatraceEntityId, dynatraceBaseUrl } = props; const dynatraceApi = useApi(dynatraceApiRef); @@ -50,14 +61,7 @@ export const ProblemsList = (props: ProblemsListProps) => { link: `${dynatraceBaseUrl}/#serviceOverview;id=${dynatraceEntityId}`, }} > - {value?.totalCount ? ( - - ) : ( - - )} + {cardContents(problems, dynatraceBaseUrl)} ); }; diff --git a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.test.tsx b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.test.tsx index e4adc43656..aaa3ea0024 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.test.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsTable/ProblemsTable.test.tsx @@ -28,17 +28,9 @@ describe('ProblemsTable', () => { it('renders the table with some problem data', async () => { const rendered = await renderInTestApp( - , + , , ); - expect(await rendered.findByText('example-service')).toBeInTheDocument(); - }); - it('renders an empty table when no data is provided', async () => { - const rendered = await renderInTestApp( - - - , - ); - expect(await rendered.findByText('Problems')).toBeInTheDocument(); + expect(await rendered.findByTitle('Search')).toBeInTheDocument(); }); }); diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx index 89f10c5750..8a06a140b4 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx @@ -14,5 +14,43 @@ * limitations under the License. */ import React from 'react'; +import { SyntheticsCard } from './SyntheticsCard'; +import { renderInTestApp, TestApiRegistry } from '@backstage/test-utils'; +import { dynatraceApiRef } from '../../../api'; +import { ApiProvider, ConfigReader } from '@backstage/core-app-api'; +import { configApiRef } from '@backstage/core-plugin-api'; -describe('SyntheticsCard', () => {}); +const mockDynatraceApi = { + getDynatraceSyntheticFailures: jest.fn(), +}; +const apis = TestApiRegistry.from( + [dynatraceApiRef, mockDynatraceApi], + [configApiRef, new ConfigReader({ dynatrace: { baseUrl: '__dynatrace__' } })], +); + +describe('SyntheticsCard', () => { + it('renders the card with Synthetics data', async () => { + mockDynatraceApi.getDynatraceSyntheticFailures = jest + .fn() + .mockResolvedValue({ + locationsExecutionResults: [ + { + locationId: '__location__', + requestResults: [{ startTimestamp: 0 }], + }, + ], + }); + const rendered = await renderInTestApp( + + + , + , + ); + expect( + await rendered.findByText('View this Synthetic in Dynatrace'), + ).toBeInTheDocument(); + }); +}); diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx index 0fa1a148e9..de04f73e36 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.test.tsx @@ -14,5 +14,52 @@ * limitations under the License. */ import React from 'react'; +import { SyntheticsLocation } from './SyntheticsLocation'; +import { renderInTestApp, TestApiRegistry } from '@backstage/test-utils'; +import { dynatraceApiRef } from '../../../api'; +import { ApiProvider, ConfigReader } from '@backstage/core-app-api'; +import { configApiRef } from '@backstage/core-plugin-api'; -describe('SyntheticsLocation', () => {}); +const mockDynatraceApi = { + getDynatraceSyntheticLocationInfo: jest.fn(), +}; +const apis = TestApiRegistry.from( + [dynatraceApiRef, mockDynatraceApi], + [configApiRef, new ConfigReader({ dynatrace: { baseUrl: '__dynatrace__' } })], +); + +describe('SyntheticsLocation', () => { + it('renders the SyntheticsLocation chip - recent failure', async () => { + mockDynatraceApi.getDynatraceSyntheticLocationInfo = jest + .fn() + .mockResolvedValue({ name: '__location__' }); + const rendered = await renderInTestApp( + + + , + , + ); + expect(await rendered.findByText(/failed/)).toBeInTheDocument(); + }); + it('renders the SyntheticsLocation chip - no failures', async () => { + mockDynatraceApi.getDynatraceSyntheticLocationInfo = jest + .fn() + .mockResolvedValue({ name: '__location__' }); + const rendered = await renderInTestApp( + + + , + , + ); + expect(await rendered.findByText(/__location__/)).toBeInTheDocument(); + expect(await rendered.queryByText(/failed/)).not.toBeInTheDocument(); + }); +}); diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx index 957f1c34f5..e72995158c 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx @@ -28,26 +28,20 @@ type SyntheticsLocationProps = { key: string; }; -const failedInLast24Hours = (timestamp: Date): Boolean => { - return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60 * 24); -}; - -const failedInLast6Hours = (timestamp: Date): Boolean => { - return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60 * 6); -}; - -const failedinLastHour = (timestamp: Date): Boolean => { - return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60); +const failedInLastXHours = (timestamp: Date, offset: number): Boolean => { + if (offset < 0 || offset > 24) + throw new Error('offset must be between 0 and 24'); + return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60 * offset); }; const chipColor = (timestamp: Date): string => { - if (failedinLastHour(timestamp)) { + if (failedInLastXHours(timestamp, 1)) { return 'salmon'; } - if (failedInLast6Hours(timestamp)) { + if (failedInLastXHours(timestamp, 6)) { return 'sandybrown'; } - if (failedInLast24Hours(timestamp)) { + if (failedInLastXHours(timestamp, 24)) { return 'palegoldenrod'; } return 'lightgreen'; @@ -71,8 +65,8 @@ export const SyntheticsLocation = (props: SyntheticsLocationProps) => { return ( Date: Thu, 4 Aug 2022 12:23:57 -0700 Subject: [PATCH 011/275] fix: yarn tsc error Signed-off-by: Isaiah Thiessen --- .../components/Problems/ProblemsList/ProblemsList.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index 17ab1842e9..ef6a2ed173 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -19,7 +19,7 @@ import { Progress } from '@backstage/core-components'; import Alert from '@material-ui/lab/Alert'; import { useApi } from '@backstage/core-plugin-api'; import { ProblemsTable } from '../ProblemsTable'; -import { dynatraceApiRef } from '../../../api'; +import { dynatraceApiRef, DynatraceProblem } from '../../../api'; import { EmptyState } from '../../EmptyState'; import { InfoCard } from '@backstage/core-components'; @@ -28,8 +28,11 @@ type ProblemsListProps = { dynatraceBaseUrl: string; }; -const cardContents = (problems: Array, dynatraceBaseUrl: string) => { - return problems?.length ? ( +const cardContents = ( + problems: DynatraceProblem[], + dynatraceBaseUrl: string, +) => { + return problems.length ? ( { link: `${dynatraceBaseUrl}/#serviceOverview;id=${dynatraceEntityId}`, }} > - {cardContents(problems, dynatraceBaseUrl)} + {cardContents(problems || [], dynatraceBaseUrl)} ); }; From 2df9955f4a649942582da2109e5a200543346e85 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Aug 2022 14:21:04 +0200 Subject: [PATCH 012/275] scaffolder-backend: removed the publish:file action Signed-off-by: Patrik Oldsberg --- .changeset/silent-kings-live.md | 5 ++ plugins/scaffolder-backend/api-report.md | 5 -- .../actions/builtin/publish/file.ts | 65 ------------------- .../actions/builtin/publish/index.ts | 1 - 4 files changed, 5 insertions(+), 71 deletions(-) create mode 100644 .changeset/silent-kings-live.md delete mode 100644 plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/file.ts diff --git a/.changeset/silent-kings-live.md b/.changeset/silent-kings-live.md new file mode 100644 index 0000000000..7e55f5ae78 --- /dev/null +++ b/.changeset/silent-kings-live.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Removed the depreacated `publish:file` action, use the template editor to test templates instead. diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 7c24bdc572..123591b1f3 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -303,11 +303,6 @@ export function createPublishBitbucketServerAction(options: { token?: string | undefined; }>; -// @public @deprecated -export function createPublishFileAction(): TemplateAction<{ - path: string; -}>; - // @public export function createPublishGerritAction(options: { integrations: ScmIntegrationRegistry; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/file.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/file.ts deleted file mode 100644 index 52376e39a3..0000000000 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/file.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import fs from 'fs-extra'; -import { dirname } from 'path'; -import { InputError } from '@backstage/errors'; -import { createTemplateAction } from '../../createTemplateAction'; - -/** - * This task is useful for local development and testing of both the scaffolder - * and scaffolder templates. - * - * @remarks - * - * This action is not installed by default and should not be installed in - * production, as it writes the files to the local filesystem of the scaffolder. - * - * @public - * @deprecated This action will be removed, prefer testing templates using the template editor instead. - */ -export function createPublishFileAction() { - return createTemplateAction<{ path: string }>({ - id: 'publish:file', - description: 'Writes contents of the workspace to a local directory', - schema: { - input: { - type: 'object', - required: ['path'], - properties: { - path: { - title: 'Path to a directory where the output will be written', - type: 'string', - }, - }, - }, - }, - async handler(ctx) { - ctx.logger.warn( - '[DEPRECATED] This action will be removed, prefer testing templates using the template editor instead.', - ); - - const { path } = ctx.input; - - const exists = await fs.pathExists(path); - if (exists) { - throw new InputError('Output path already exists'); - } - await fs.ensureDir(dirname(path)); - await fs.copy(ctx.workspacePath, path); - }, - }); -} diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/index.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/index.ts index 8819c93d08..a8a40ab1df 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/index.ts @@ -18,7 +18,6 @@ export { createPublishAzureAction } from './azure'; export { createPublishBitbucketAction } from './bitbucket'; export { createPublishBitbucketCloudAction } from './bitbucketCloud'; export { createPublishBitbucketServerAction } from './bitbucketServer'; -export { createPublishFileAction } from './file'; export { createPublishGerritAction } from './gerrit'; export { createPublishGerritReviewAction } from './gerritReview'; export { createPublishGithubAction } from './github'; From 009cffb4ee9c8201011f962bc4a42867e6ab4128 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Aug 2022 13:15:35 +0200 Subject: [PATCH 013/275] contrib: remove kubernetes example as its all documented elsewhere Signed-off-by: Patrik Oldsberg --- .../kubernetes-example-backend/Dockerfile | 33 ------------------- .../kubernetes-example-backend/README.md | 13 -------- 2 files changed, 46 deletions(-) delete mode 100644 contrib/docker/kubernetes-example-backend/Dockerfile delete mode 100644 contrib/docker/kubernetes-example-backend/README.md diff --git a/contrib/docker/kubernetes-example-backend/Dockerfile b/contrib/docker/kubernetes-example-backend/Dockerfile deleted file mode 100644 index 4f4105838d..0000000000 --- a/contrib/docker/kubernetes-example-backend/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM node:14-buster - -WORKDIR /usr/src/app - -# (workaround) Install cookiecutter and mkdocs to avoid the need to run docker in docker -RUN cd /tmp && curl -O https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz && \ - tar -xvf Python-3.8.2.tar.xz && \ - cd Python-3.8.2 && \ - ./configure --enable-optimizations && \ - make -j 4 && \ - make altinstall - -RUN apt update -RUN apt install -y mkdocs - -RUN pip3.8 install mkdocs-techdocs-core - -RUN pip3.8 install cookiecutter && \ - apt remove -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev g++ python-pip python-dev && \ - rm -rf /var/cache/apt/* /tmp/Python-3.8.2 - -# Copy repo skeleton first, to avoid unnecessary docker cache invalidation. -# The skeleton contains the package.json of each package in the monorepo, -# and along with yarn.lock and the root package.json, that's enough to run yarn install. -ADD yarn.lock package.json skeleton.tar ./ - -RUN yarn install --frozen-lockfile --production - -# This will copy the contents of the dist-workspace when running the build-image command. -# Do not use this Dockerfile outside of that command, as it will copy in the source code instead. -COPY . . - -CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.development.yaml"] diff --git a/contrib/docker/kubernetes-example-backend/README.md b/contrib/docker/kubernetes-example-backend/README.md deleted file mode 100644 index d0f9d57022..0000000000 --- a/contrib/docker/kubernetes-example-backend/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Example backend Dockerfile - -This Dockerfile will build the example backend with certain additional binaries needed to workaround -the docker requirement in the scaffolder and techdocs. - -# Usage - -```bash -yarn docker-build -f --tag -``` - -> The absolute path is necessary as this directory is not copied to the build workspace when building -> the docker image. From afb14027c2d1f02339fa54fbf47ee9708386689f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Aug 2022 13:21:18 +0200 Subject: [PATCH 014/275] contrib: remove jinja2 extension Dockerfile example, inline in README instead Signed-off-by: Patrik Oldsberg --- .../cookiecutter-with-jinja2-extensions/Dockerfile | 11 ----------- .../cookiecutter-with-jinja2-extensions/README.md | 2 +- 2 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile diff --git a/contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile b/contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile deleted file mode 100644 index e41d324730..0000000000 --- a/contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM alpine:3.16 - -RUN apk add --update \ - git \ - python \ - python-dev \ - py-pip \ - g++ && \ - pip install cookiecutter jinja2_custom_filters_extension && \ - apk del g++ py-pip python-dev && \ - rm -rf /var/cache/apk/* diff --git a/contrib/docker/cookiecutter-with-jinja2-extensions/README.md b/contrib/docker/cookiecutter-with-jinja2-extensions/README.md index 470694513a..0b754fa4ce 100644 --- a/contrib/docker/cookiecutter-with-jinja2-extensions/README.md +++ b/contrib/docker/cookiecutter-with-jinja2-extensions/README.md @@ -51,7 +51,7 @@ steps: imageName: 'foo/custom-built-cookiecutter-image-with-extensions' ``` -See for example, the [`Dockerfile`](./Dockerfile) in this directory. +For example, you can `pip install jinja2_custom_filters_extension` as part of your cookiecutter Dockerfile. ### Instructing Cookiecutter to use the extension From 8a0f1459708b6d2abd0e548f034b18d817eeedf9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Aug 2022 13:25:39 +0200 Subject: [PATCH 015/275] create-app: update Dockerfile to run app with node user Signed-off-by: Patrik Oldsberg --- docs/deployment/docker.md | 22 +++++++++++-------- packages/backend/Dockerfile | 10 +++++---- .../default-app/packages/backend/Dockerfile | 10 +++++---- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 6e0ff77228..ff31a6a81f 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -58,8 +58,6 @@ Once the host build is complete, we are ready to build our image. The following ```Dockerfile FROM node:16-bullseye-slim -WORKDIR /app - # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. RUN apt-get update && \ @@ -67,16 +65,20 @@ RUN apt-get update && \ rm -rf /var/lib/apt/lists/* && \ yarn config set python /usr/bin/python3 +# From here on we use the least-privileged `node` user to run the backend. +USER node +WORKDIR /app + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. # The skeleton contains the package.json of each package in the monorepo, # and along with yarn.lock and the root package.json, that's enough to run yarn install. -COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ +COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" # Then copy the rest of the backend bundle, along with any other files we might want. -COPY packages/backend/dist/bundle.tar.gz app-config.yaml ./ +COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ RUN tar xzf bundle.tar.gz && rm bundle.tar.gz CMD ["node", "packages/backend", "--config", "app-config.yaml"] @@ -177,8 +179,6 @@ RUN yarn --cwd packages/backend build # Stage 3 - Build the actual backend image and install production dependencies FROM node:16-bullseye-slim -WORKDIR /app - # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. RUN apt-get update && \ @@ -186,18 +186,22 @@ RUN apt-get update && \ rm -rf /var/lib/apt/lists/* && \ yarn config set python /usr/bin/python3 +# From here on we use the least-privileged `node` user to run the backend. +USER node +WORKDIR /app + # Copy the install dependencies from the build stage and context -COPY --from=build /app/yarn.lock /app/package.json /app/packages/backend/dist/skeleton.tar.gz ./ +COPY --from=build --chown=node:node /app/yarn.lock /app/package.json /app/packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz RUN yarn install --frozen-lockfile --production --network-timeout 600000 && rm -rf "$(yarn cache dir)" # Copy the built packages from the build stage -COPY --from=build /app/packages/backend/dist/bundle.tar.gz . +COPY --from=build --chown=node:node /app/packages/backend/dist/bundle.tar.gz . RUN tar xzf bundle.tar.gz && rm bundle.tar.gz # Copy any other files that we need at runtime -COPY app-config.yaml ./ +COPY --chown=node:node app-config.yaml ./ CMD ["node", "packages/backend", "--config", "app-config.yaml"] ``` diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index fb60b8a669..bda34fa045 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -11,8 +11,6 @@ FROM node:16-bullseye-slim -WORKDIR /app - # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. RUN apt-get update && \ @@ -20,16 +18,20 @@ RUN apt-get update && \ rm -rf /var/lib/apt/lists/* && \ yarn config set python /usr/bin/python3 +# From here on we use the least-privileged `node` user to run the backend. +USER node +WORKDIR /app + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. # The skeleton contains the package.json of each package in the monorepo, # and along with yarn.lock and the root package.json, that's enough to run yarn install. -COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ +COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" # Then copy the rest of the backend bundle, along with any other files we might want. -COPY packages/backend/dist/bundle.tar.gz app-config.yaml ./ +COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ RUN tar xzf bundle.tar.gz && rm bundle.tar.gz CMD ["node", "packages/backend", "--config", "app-config.yaml"] diff --git a/packages/create-app/templates/default-app/packages/backend/Dockerfile b/packages/create-app/templates/default-app/packages/backend/Dockerfile index 8836ac7898..c926ba350b 100644 --- a/packages/create-app/templates/default-app/packages/backend/Dockerfile +++ b/packages/create-app/templates/default-app/packages/backend/Dockerfile @@ -11,8 +11,6 @@ FROM node:16-bullseye-slim -WORKDIR /app - # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. RUN apt-get update && \ @@ -20,16 +18,20 @@ RUN apt-get update && \ rm -rf /var/lib/apt/lists/* && \ yarn config set python /usr/bin/python3 +# From here on we use the least-privileged `node` user to run the backend. +USER node +WORKDIR /app + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. # The skeleton contains the package.json of each package in the monorepo, # and along with yarn.lock and the root package.json, that's enough to run yarn install. -COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ +COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" # Then copy the rest of the backend bundle, along with any other files we might want. -COPY packages/backend/dist/bundle.tar.gz app-config*.yaml ./ +COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ RUN tar xzf bundle.tar.gz && rm bundle.tar.gz CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] From 1725b2a3aa0bec1048b405ffe1653267c8e77a19 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Aug 2022 13:26:02 +0200 Subject: [PATCH 016/275] create-app: update Dockerfile to set NODE_ENV=production Signed-off-by: Patrik Oldsberg --- docs/deployment/docker.md | 6 ++++++ packages/backend/Dockerfile | 3 +++ .../templates/default-app/packages/backend/Dockerfile | 3 +++ 3 files changed, 12 insertions(+) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index ff31a6a81f..d46aff1b06 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -69,6 +69,9 @@ RUN apt-get update && \ USER node WORKDIR /app +# This switches many Node.js dependencies to production mode. +ENV NODE_ENV production + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. # The skeleton contains the package.json of each package in the monorepo, # and along with yarn.lock and the root package.json, that's enough to run yarn install. @@ -190,6 +193,9 @@ RUN apt-get update && \ USER node WORKDIR /app +# This switches many Node.js dependencies to production mode. +ENV NODE_ENV production + # Copy the install dependencies from the build stage and context COPY --from=build --chown=node:node /app/yarn.lock /app/package.json /app/packages/backend/dist/skeleton.tar.gz ./ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index bda34fa045..ed18da530b 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -22,6 +22,9 @@ RUN apt-get update && \ USER node WORKDIR /app +# This switches many Node.js dependencies to production mode. +ENV NODE_ENV production + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. # The skeleton contains the package.json of each package in the monorepo, # and along with yarn.lock and the root package.json, that's enough to run yarn install. diff --git a/packages/create-app/templates/default-app/packages/backend/Dockerfile b/packages/create-app/templates/default-app/packages/backend/Dockerfile index c926ba350b..682798b826 100644 --- a/packages/create-app/templates/default-app/packages/backend/Dockerfile +++ b/packages/create-app/templates/default-app/packages/backend/Dockerfile @@ -22,6 +22,9 @@ RUN apt-get update && \ USER node WORKDIR /app +# This switches many Node.js dependencies to production mode. +ENV NODE_ENV production + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. # The skeleton contains the package.json of each package in the monorepo, # and along with yarn.lock and the root package.json, that's enough to run yarn install. From 208d6780c99f2383f45d3bdf73bd62a7264bcd4d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Aug 2022 13:51:19 +0200 Subject: [PATCH 017/275] changesets: added changeset for create-app prod changes Signed-off-by: Patrik Oldsberg --- .changeset/hot-files-begin.md | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .changeset/hot-files-begin.md diff --git a/.changeset/hot-files-begin.md b/.changeset/hot-files-begin.md new file mode 100644 index 0000000000..e9b9076986 --- /dev/null +++ b/.changeset/hot-files-begin.md @@ -0,0 +1,71 @@ +--- +'@backstage/create-app': patch +--- + +The `packages/backend/Dockerfile` received a couple of updates, it now looks as follows: + +```Dockerfile +FROM node:16-bullseye-slim + +# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, +# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +RUN apt-get update && \ + apt-get install -y --no-install-recommends libsqlite3-dev python3 build-essential && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + +# From here on we use the least-privileged `node` user to run the backend. +USER node +WORKDIR /app + +# This switches many Node.js dependencies to production mode. +ENV NODE_ENV production + +# Copy repo skeleton first, to avoid unnecessary docker cache invalidation. +# The skeleton contains the package.json of each package in the monorepo, +# and along with yarn.lock and the root package.json, that's enough to run yarn install. +COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ +RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz + +RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" + +# Then copy the rest of the backend bundle, along with any other files we might want. +COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ +RUN tar xzf bundle.tar.gz && rm bundle.tar.gz + +CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] +``` + +The two notable changes are that a `USER node` instruction has been added and the ordering of instructions has been changed accordingly. This means that the app will now be running using the least-privileged `node` user. In order for this to work we now need to make sure that all app files are owned by the `node` user, which we do by adding the `--chown=node:node` option to the `COPY` instructions. + +The second change is the addition of `ENV NODE_ENV production`, which ensured that all Node.js modules run in production mode. If you apply this change to an existing app, note that one of the more significant changes is that this switches the log formatting to use the default production format, JSON. Rather than your log lines looking like this: + +```log +2022-08-10T11:36:05.478Z catalog info Performing database migration type=plugin +``` + +They will now look like this: + +```log +{"level":"info","message":"Performing database migration","plugin":"catalog","service":"backstage","type":"plugin"} +``` + +If you wish to keep the existing format, you can override this change by applying the following change to `packages/backend/src/index.ts`: + +```diff + getRootLogger, ++ setRootLogger, ++ createRootLogger, ++ coloredFormat, + useHotMemoize, + ... + ServerTokenManager, + } from '@backstage/backend-common'; + + ... + + async function main() { ++ setRootLogger(createRootLogger({ format: coloredFormat })); ++ + const config = await loadBackendConfig({ +``` From 05fc47c52581bc1116efb06bdbd93024fe3b1b72 Mon Sep 17 00:00:00 2001 From: Axel Hecht Date: Thu, 11 Aug 2022 17:40:04 +0200 Subject: [PATCH 018/275] [techdocs/cli] Use light theme if it's not dark, to avoid breaking the theme selector on other values in local storage Fixes #12995 Signed-off-by: Axel Hecht --- .changeset/purple-games-think.md | 5 +++++ .../src/components/TechDocsPage/TechDocsPage.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/purple-games-think.md diff --git a/.changeset/purple-games-think.md b/.changeset/purple-games-think.md new file mode 100644 index 0000000000..6247f82249 --- /dev/null +++ b/.changeset/purple-games-think.md @@ -0,0 +1,5 @@ +--- +'techdocs-cli-embedded-app': patch +--- + +Theme selector in `npx @techdocs/cli serve` would break if localstorage had a non-light-or-dark value for theme. diff --git a/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx b/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx index c7328a0487..cc20081198 100644 --- a/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx +++ b/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx @@ -55,7 +55,7 @@ export const TechDocsThemeToggle = () => { const appThemeApi = useApi(appThemeApiRef); const classes = useStyles(); const [theme, setTheme] = useState( - (appThemeApi.getActiveThemeId() as Themes) || Themes.LIGHT, + appThemeApi.getActiveThemeId() === Themes.DARK ? Themes.DARK : Themes.LIGHT, ); const themes = { From fede3560b150e941346d55a68bc25d840e0b7580 Mon Sep 17 00:00:00 2001 From: Axel Hecht Date: Thu, 11 Aug 2022 18:01:35 +0200 Subject: [PATCH 019/275] Remove changeset Signed-off-by: Axel Hecht --- .changeset/purple-games-think.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/purple-games-think.md diff --git a/.changeset/purple-games-think.md b/.changeset/purple-games-think.md deleted file mode 100644 index 6247f82249..0000000000 --- a/.changeset/purple-games-think.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'techdocs-cli-embedded-app': patch ---- - -Theme selector in `npx @techdocs/cli serve` would break if localstorage had a non-light-or-dark value for theme. From aab62307ab5b0c66ee24b330470b2c5ba4aba0a4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 11 Aug 2022 18:33:24 +0000 Subject: [PATCH 020/275] fix(deps): update dependency graphiql to v1.11.4 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9bd862beb8..df8bed6c8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2792,10 +2792,10 @@ teeny-request "^8.0.0" uuid "^8.0.0" -"@graphiql/react@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@graphiql/react/-/react-0.9.0.tgz#8450d3ea6dbf096deb16c9b297ff2ed526e793f4" - integrity sha512-JwhHVFS4ZP5lCchaf31NMJ/MVxl//DGrt/WO9XVjtQoL4kkAWMnNOQzZmTAnbEfPwdQUhkMz+xL50Yum3QrIZg== +"@graphiql/react@^0.10.0": + version "0.10.0" + resolved "https://registry.npmjs.org/@graphiql/react/-/react-0.10.0.tgz#8d888949dc6c9ddebe0817aeba3e2c164bfbb1bb" + integrity sha512-8Xo1O6SQps6R+mOozN7Ht85/07RwyXgJcKNeR2dWPkJz/1Lww8wVHIKM/AUpo0Aaoh6Ps3UK9ep8DDRfBT4XrQ== dependencies: "@graphiql/toolkit" "^0.6.1" codemirror "^5.65.3" @@ -14693,11 +14693,11 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12, graphiql@^1.8.8: - version "1.11.3" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.11.3.tgz#ed14117c1a9b1d93e66a9e5c23b135ba2bd15a6f" - integrity sha512-cvXYU0adFsvCIxbHMTcpi69jR5LZOG6tP00jnoSbgrYvQvGvIDGgRB5Dam+NmubVTqbjiC/SqF8mzh8rZp7AhQ== + version "1.11.4" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.11.4.tgz#c84f39dbc7379fef62bc0ff98c9af86bfbce3241" + integrity sha512-yPjEPssKp6mo91q2zjSs6WUpiGm37r396OSHnfSVn0bE4jOMBtB2sbjzwe0GVKZeY3MpfZjpK0UFGrS05wb+qw== dependencies: - "@graphiql/react" "^0.9.0" + "@graphiql/react" "^0.10.0" "@graphiql/toolkit" "^0.6.1" entities "^2.0.0" graphql-language-service "^5.0.6" From 444a188d95ea196c9781f3a5f54f04ce97b1e10d Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 11 Aug 2022 14:43:37 -0700 Subject: [PATCH 021/275] fix: use @backstage/core-components, address PR feedback from @freben Signed-off-by: Isaiah Thiessen --- plugins/dynatrace/src/api/DynatraceClient.ts | 12 +++-- .../components/DynatraceTab/DynatraceTab.tsx | 18 +++++--- .../src/components/EmptyState/EmptyState.tsx | 46 ------------------- .../src/components/EmptyState/index.ts | 17 ------- .../Problems/ProblemsList/ProblemsList.tsx | 12 +++-- .../Problems/ProblemsTable/ProblemsTable.tsx | 11 +++-- .../SyntheticsCard/SyntheticsCard.tsx | 7 ++- .../SyntheticsLocation/SyntheticsLocation.tsx | 7 ++- plugins/dynatrace/src/constants.ts | 3 +- plugins/dynatrace/src/plugin.ts | 8 +++- 10 files changed, 46 insertions(+), 95 deletions(-) delete mode 100644 plugins/dynatrace/src/components/EmptyState/EmptyState.tsx delete mode 100644 plugins/dynatrace/src/components/EmptyState/index.ts diff --git a/plugins/dynatrace/src/api/DynatraceClient.ts b/plugins/dynatrace/src/api/DynatraceClient.ts index 1aabd3fb6d..a31253bcb5 100644 --- a/plugins/dynatrace/src/api/DynatraceClient.ts +++ b/plugins/dynatrace/src/api/DynatraceClient.ts @@ -64,7 +64,10 @@ export class DynatraceClient implements DynatraceApi { throw new Error('Dynatrace syntheticId is required'); } - return this.callApi(`synthetic/execution/${syntheticsId}/FAILED`, {}); + return this.callApi( + `synthetic/execution/${encodeURIComponent(syntheticsId)}/FAILED`, + {}, + ); } async getDynatraceSyntheticLocationInfo( @@ -74,14 +77,17 @@ export class DynatraceClient implements DynatraceApi { throw new Error('Dynatrace syntheticLocationId is required'); } - return this.callApi(`synthetic/locations/${syntheticLocationId}`, {}); + return this.callApi( + `synthetic/locations/${encodeURIComponent(syntheticLocationId)}`, + {}, + ); } async getDynatraceProblems( dynatraceEntityId: string, ): Promise { if (!dynatraceEntityId) { - throw new Error('Dynatrace entity Id is required'); + throw new Error('Dynatrace entity id is required'); } return this.callApi('problems', { diff --git a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx index 3e137f4109..59886a121d 100644 --- a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx +++ b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx @@ -50,14 +50,18 @@ export const DynatraceTab = () => { - - - + {dynatraceEntityId ? ( + + + + ) : ( + '' + )} {syntheticsIds - .replace(' ', '') + ?.replace(' ', '') .split(',') .map(id => { return ( diff --git a/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx b/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx deleted file mode 100644 index 87d0099499..0000000000 --- a/plugins/dynatrace/src/components/EmptyState/EmptyState.tsx +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import React from 'react'; -import { Grid, Typography } from '@material-ui/core'; -import EmptyStateImage from '../../assets/emptystate.svg'; - -type EmptyStateProps = { - message: string; -}; - -export const EmptyState = (props: EmptyStateProps) => { - const { message } = props; - return ( - - - {message} - - - EmptyState - - - ); -}; diff --git a/plugins/dynatrace/src/components/EmptyState/index.ts b/plugins/dynatrace/src/components/EmptyState/index.ts deleted file mode 100644 index 0037560be4..0000000000 --- a/plugins/dynatrace/src/components/EmptyState/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { EmptyState } from './EmptyState'; diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index ef6a2ed173..8fb3f67934 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -15,12 +15,14 @@ */ import React from 'react'; import useAsync from 'react-use/lib/useAsync'; -import { Progress } from '@backstage/core-components'; -import Alert from '@material-ui/lab/Alert'; +import { + Progress, + ResponseErrorPanel, + EmptyState, +} from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; import { ProblemsTable } from '../ProblemsTable'; import { dynatraceApiRef, DynatraceProblem } from '../../../api'; -import { EmptyState } from '../../EmptyState'; import { InfoCard } from '@backstage/core-components'; type ProblemsListProps = { @@ -38,7 +40,7 @@ const cardContents = ( dynatraceBaseUrl={dynatraceBaseUrl} /> ) : ( - + ); }; @@ -53,7 +55,7 @@ export const ProblemsList = (props: ProblemsListProps) => { if (loading) { return ; } else if (error) { - return {error.message}; + return ; } return ( { + return timestamp ? new Date(timestamp).toLocaleString() : 'N/A'; +}; + export const ProblemsTable = (props: ProblemsTableProps) => { const { problems, dynatraceBaseUrl } = props; const columns: TableColumn[] = [ @@ -60,16 +64,13 @@ export const ProblemsTable = (props: ProblemsTableProps) => { { title: 'Start Time', field: 'startTime', - render: (row: Partial) => - new Date(row.startTime || 0).toLocaleString(), + render: (row: Partial) => parseTimestamp(row.startTime), }, { title: 'End Time', field: 'endTime', render: (row: Partial) => - row.endTime === -1 - ? 'ongoing' - : new Date(row.endTime || 0).toLocaleString(), + row.endTime === -1 ? 'ongoing' : parseTimestamp(row.endTime), }, ]; diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx index 1b73e51313..531d7ef72f 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; import useAsync from 'react-use/lib/useAsync'; -import { Progress } from '@backstage/core-components'; -import Alert from '@material-ui/lab/Alert'; +import { Progress, ResponseErrorPanel } from '@backstage/core-components'; import { InfoCard } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; import { dynatraceApiRef } from '../../../api'; @@ -50,11 +49,11 @@ export const SyntheticsCard = (props: SyntheticsCardProps) => { if (loading) { return ; } else if (error) { - return {error.message}; + return ; } const deepLinkPrefix = dynatraceMonitorPrefixes( - `${syntheticsId.match(/(.+)-/)![1]}`, + `${syntheticsId.split('-')[0]}`, ); const lastFailed = value?.locationsExecutionResults.map(l => { diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx index e72995158c..4d328210cb 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsLocation/SyntheticsLocation.tsx @@ -16,8 +16,7 @@ import React from 'react'; import useAsync from 'react-use/lib/useAsync'; -import { Progress } from '@backstage/core-components'; -import Alert from '@material-ui/lab/Alert'; +import { Progress, ResponseErrorPanel } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; import { Chip } from '@material-ui/core'; import { dynatraceApiRef } from '../../../api'; @@ -28,7 +27,7 @@ type SyntheticsLocationProps = { key: string; }; -const failedInLastXHours = (timestamp: Date, offset: number): Boolean => { +const failedInLastXHours = (timestamp: Date, offset: number): boolean => { if (offset < 0 || offset > 24) throw new Error('offset must be between 0 and 24'); return timestamp > new Date(new Date().getTime() - 1000 * 60 * 60 * offset); @@ -59,7 +58,7 @@ export const SyntheticsLocation = (props: SyntheticsLocationProps) => { if (loading) { return ; } else if (error) { - return {error.message}; + return ; } return ( diff --git a/plugins/dynatrace/src/constants.ts b/plugins/dynatrace/src/constants.ts index 8f504db1f4..c4cc48d48a 100644 --- a/plugins/dynatrace/src/constants.ts +++ b/plugins/dynatrace/src/constants.ts @@ -14,5 +14,4 @@ * limitations under the License. */ export const DYNATRACE_ID_ANNOTATION = 'dynatrace.com/dynatrace-entity-id'; -export const DYNATRACE_SYNTHETICS_ANNOTATION = - 'dynatrace.com/dynatrace-synthetics-ids'; +export const DYNATRACE_SYNTHETICS_ANNOTATION = 'dynatrace.com/synthetics-ids'; diff --git a/plugins/dynatrace/src/plugin.ts b/plugins/dynatrace/src/plugin.ts index fc1778b45c..26ecb1aba1 100644 --- a/plugins/dynatrace/src/plugin.ts +++ b/plugins/dynatrace/src/plugin.ts @@ -23,7 +23,10 @@ import { } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; -import { DYNATRACE_ID_ANNOTATION } from './constants'; +import { + DYNATRACE_ID_ANNOTATION, + DYNATRACE_SYNTHETICS_ANNOTATION, +} from './constants'; import { rootRouteRef } from './routes'; @@ -55,7 +58,8 @@ export const dynatracePlugin = createPlugin({ * @param entity {Entity} - The entity to check for the dynatrace id annotation. */ export const isDynatraceAvailable = (entity: Entity) => - Boolean(entity.metadata.annotations?.[DYNATRACE_ID_ANNOTATION]); + Boolean(entity.metadata.annotations?.[DYNATRACE_ID_ANNOTATION]) || + Boolean(entity.metadata.annotations?.[DYNATRACE_SYNTHETICS_ANNOTATION]); /** * Creates a routable extension for the dynatrace plugin tab. From 392f99a3dfc7979b0cbba4270aa109eefe6e5512 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 11 Aug 2022 14:45:36 -0700 Subject: [PATCH 022/275] fix: remove extra svg file Signed-off-by: Isaiah Thiessen --- plugins/dynatrace/src/assets/emptystate.svg | 1 - 1 file changed, 1 deletion(-) delete mode 100644 plugins/dynatrace/src/assets/emptystate.svg diff --git a/plugins/dynatrace/src/assets/emptystate.svg b/plugins/dynatrace/src/assets/emptystate.svg deleted file mode 100644 index 8a0490727f..0000000000 --- a/plugins/dynatrace/src/assets/emptystate.svg +++ /dev/null @@ -1 +0,0 @@ - From dde444346d45e4017b7c581173b9f9b98c9e10ed Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Thu, 11 Aug 2022 15:00:07 -0700 Subject: [PATCH 023/275] fix: pull dynatraceBaseUrl from config, support [, ] for synthetics annotation Signed-off-by: Isaiah Thiessen --- .../components/DynatraceTab/DynatraceTab.tsx | 18 ++++-------------- .../Problems/ProblemsList/ProblemsList.tsx | 8 +++++--- .../SyntheticsCard/SyntheticsCard.tsx | 8 +++++--- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx index 59886a121d..3f58eed9dc 100644 --- a/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx +++ b/plugins/dynatrace/src/components/DynatraceTab/DynatraceTab.tsx @@ -21,7 +21,6 @@ import { MissingAnnotationEmptyState, } from '@backstage/core-components'; import { useEntity } from '@backstage/plugin-catalog-react'; -import { useApi, configApiRef } from '@backstage/core-plugin-api'; import { ProblemsList } from '../Problems/ProblemsList'; import { SyntheticsCard } from '../Synthetics/SyntheticsCard'; import { isDynatraceAvailable } from '../../plugin'; @@ -33,9 +32,6 @@ import { export const DynatraceTab = () => { const { entity } = useEntity(); - const configApi = useApi(configApiRef); - const dynatraceBaseUrl = configApi.getString('dynatrace.baseUrl'); - if (!isDynatraceAvailable(entity)) { return ; } @@ -52,24 +48,18 @@ export const DynatraceTab = () => { {dynatraceEntityId ? ( - + ) : ( '' )} {syntheticsIds - ?.replace(' ', '') - .split(',') + ?.split(/[ ,]/) + .filter(Boolean) .map(id => { return ( - + ); })} diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index 8fb3f67934..2ee0dda48d 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -20,14 +20,13 @@ import { ResponseErrorPanel, EmptyState, } from '@backstage/core-components'; -import { useApi } from '@backstage/core-plugin-api'; +import { useApi, configApiRef } from '@backstage/core-plugin-api'; import { ProblemsTable } from '../ProblemsTable'; import { dynatraceApiRef, DynatraceProblem } from '../../../api'; import { InfoCard } from '@backstage/core-components'; type ProblemsListProps = { dynatraceEntityId: string; - dynatraceBaseUrl: string; }; const cardContents = ( @@ -45,8 +44,11 @@ const cardContents = ( }; export const ProblemsList = (props: ProblemsListProps) => { - const { dynatraceEntityId, dynatraceBaseUrl } = props; + const { dynatraceEntityId } = props; + const configApi = useApi(configApiRef); const dynatraceApi = useApi(dynatraceApiRef); + const dynatraceBaseUrl = configApi.getString('dynatrace.baseUrl'); + const { value, loading, error } = useAsync(async () => { return dynatraceApi.getDynatraceProblems(dynatraceEntityId); }, [dynatraceApi, dynatraceEntityId]); diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx index 531d7ef72f..6b51a1725c 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.tsx @@ -17,13 +17,12 @@ import React from 'react'; import useAsync from 'react-use/lib/useAsync'; import { Progress, ResponseErrorPanel } from '@backstage/core-components'; import { InfoCard } from '@backstage/core-components'; -import { useApi } from '@backstage/core-plugin-api'; +import { useApi, configApiRef } from '@backstage/core-plugin-api'; import { dynatraceApiRef } from '../../../api'; import { SyntheticsLocation } from '../SyntheticsLocation'; type SyntheticsCardProps = { syntheticsId: string; - dynatraceBaseUrl: string; }; const dynatraceMonitorPrefixes = (idPrefix: string): string => { @@ -40,8 +39,11 @@ const dynatraceMonitorPrefixes = (idPrefix: string): string => { }; export const SyntheticsCard = (props: SyntheticsCardProps) => { - const { syntheticsId, dynatraceBaseUrl } = props; + const { syntheticsId } = props; + const configApi = useApi(configApiRef); const dynatraceApi = useApi(dynatraceApiRef); + const dynatraceBaseUrl = configApi.getString('dynatrace.baseUrl'); + const { value, loading, error } = useAsync(async () => { return dynatraceApi.getDynatraceSyntheticFailures(syntheticsId); }, [dynatraceApi, syntheticsId]); From 829f14a9b09538ba6de31bf29214c0eadf29a816 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Fri, 12 Aug 2022 15:27:25 +0200 Subject: [PATCH 024/275] fix(techdocs): to update title and subtitle when location changes Signed-off-by: Camila Belo --- .changeset/techdocs-jeans-wait.md | 5 +++++ .../TechDocsReaderPageHeader.tsx | 9 +++------ 2 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 .changeset/techdocs-jeans-wait.md diff --git a/.changeset/techdocs-jeans-wait.md b/.changeset/techdocs-jeans-wait.md new file mode 100644 index 0000000000..b4d9007754 --- /dev/null +++ b/.changeset/techdocs-jeans-wait.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Always update the title and sub-title when the location changes on a `TechDocs` reader page. diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader/TechDocsReaderPageHeader.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader/TechDocsReaderPageHeader.tsx index 8826154eee..e76cb1d173 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader/TechDocsReaderPageHeader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader/TechDocsReaderPageHeader.tsx @@ -77,16 +77,13 @@ export const TechDocsReaderPageHeader = ( useEffect(() => { if (!metadata) return; - setTitle(prevTitle => { - const { site_name } = metadata; - return prevTitle || site_name; - }); - setSubtitle(prevSubtitle => { + setTitle(metadata.site_name); + setSubtitle(() => { let { site_description } = metadata; if (!site_description || site_description === 'None') { site_description = 'Home'; } - return prevSubtitle || site_description; + return site_description; }); }, [metadata, setTitle, setSubtitle]); From bd34a1e7d4acefd0162eea0e012c82eabba5db10 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Thu, 11 Aug 2022 16:07:10 +0100 Subject: [PATCH 025/275] feat: add readme card plugin on azure devops Signed-off-by: Alisson Fabiano --- .../src/api/AzureDevOpsApi.ts | 21 +++ .../src/service/router.test.ts | 58 ++++++++ .../src/service/router.ts | 19 ++- .../src/utils/azure-devops-utils.ts | 50 +++++++ plugins/azure-devops-common/src/types.ts | 10 ++ .../azure-devops/src/api/AzureDevOpsApi.ts | 4 + .../azure-devops/src/api/AzureDevOpsClient.ts | 23 +++ .../src/components/ReadMeCard/ReadMeCard.tsx | 132 ++++++++++++++++++ .../src/components/ReadMeCard/index.ts | 17 +++ plugins/azure-devops/src/index.ts | 1 + 10 files changed, 333 insertions(+), 2 deletions(-) create mode 100644 plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx create mode 100644 plugins/azure-devops/src/components/ReadMeCard/index.ts diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index 240ba0b189..453f28809a 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -42,6 +42,7 @@ import { convertDashboardPullRequest, convertPolicy, getArtifactId, + replaceReadme, } from '../utils'; import { TeamMember as AdoTeamMember } from 'azure-devops-node-api/interfaces/common/VSSInterfaces'; @@ -52,11 +53,13 @@ import { TeamProjectReference, WebApiTeam, } from 'azure-devops-node-api/interfaces/CoreInterfaces'; +import { UrlReader } from '@backstage/backend-common'; export class AzureDevOpsApi { public constructor( private readonly logger: Logger, private readonly webApi: WebApi, + private readonly urlReader: UrlReader, ) {} public async getProjects(): Promise { @@ -393,6 +396,24 @@ export class AzureDevOpsApi { return buildRuns; } + + public async getReadme( + host: string, + organization: string, + projectName: string, + repoName: string, + ): Promise { + const getContentFile = async ( + path: string, + encoding?: BufferEncoding, + ): Promise => { + const url = `https://${host}/${organization}/${projectName}/_git/${repoName}?path=${path}`; + const response = await this.urlReader.read(url); + return Buffer.from(response).toString(encoding); + }; + const readmeContent = await getContentFile('README.md'); + return await replaceReadme(readmeContent, getContentFile); + } } export function mappedRepoBuild(build: Build): RepoBuild { diff --git a/plugins/azure-devops-backend/src/service/router.test.ts b/plugins/azure-devops-backend/src/service/router.test.ts index 3bf18de6a2..063d80b9a0 100644 --- a/plugins/azure-devops-backend/src/service/router.test.ts +++ b/plugins/azure-devops-backend/src/service/router.test.ts @@ -53,6 +53,7 @@ describe('createRouter', () => { getBuildRuns: jest.fn(), getAllTeams: jest.fn(), getTeamMembers: jest.fn(), + getReadme: jest.fn(), } as any; const router = await createRouter({ azureDevOpsApi, @@ -455,4 +456,61 @@ describe('createRouter', () => { expect(response.status).toEqual(200); }); }); + + describe('GET /readme/:projectName/:repoName', () => { + it('fetches readme file', async () => { + const readmeMock = getReadmeMock(); + azureDevOpsApi.getReadme.mockResolvedValueOnce(readmeMock); + const response = await request(app).get( + '/readme/myProject/myRepo?path=README.md', + ); + expect(azureDevOpsApi.getReadme).toHaveBeenCalledWith( + 'host.com', + 'myOrg', + 'myProject', + 'myRepo', + ); + expect(response.status).toEqual(200); + expect(response.body).toEqual({ + content: readmeMock, + url: `https://host.com/myOrg/myProject/_git/myRepo?path=README.md`, + }); + }); + }); }); + +function getReadmeMock() { + return ` + # Introduction + TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project. + + # Getting Started + TODO: Guide users through getting your code up and running on their own system. In this section you can talk about: + 1. Installation process + 2. Software dependencies + 3. Latest releases + 4. API references + + # Build and Test + TODO: Describe and show how to build your code and run the tests. + + # Contribute + TODO: Explain how other users and developers can contribute to make your code better. + + If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files: + - [ASP.NET Core](https://github.com/aspnet/Home) + - [Visual Studio Code](https://github.com/Microsoft/vscode) + - [Chakra Core](https://github.com/Microsoft/ChakraCore) + + + - ![Imagem 1](./images/image1.jpg) + - ![Imagem 2](./images/image2.png) + - ![Imagem 3](./images/image3.jpg) + - ![Imagem 4](./images/image4.webp) + - ![Imagem 5](./images/image5.png) + - ![Imagem 6](/images/image6.png) + - ![Imagem 7](/images/image-7.jpg) + - ![Imagem 8](./images/image-8.gif) + - ![Imagem 9](/images/image9.png) + `; +} diff --git a/plugins/azure-devops-backend/src/service/router.ts b/plugins/azure-devops-backend/src/service/router.ts index a4a76b4a14..36bacba8be 100644 --- a/plugins/azure-devops-backend/src/service/router.ts +++ b/plugins/azure-devops-backend/src/service/router.ts @@ -26,7 +26,7 @@ import { Config } from '@backstage/config'; import { Logger } from 'winston'; import { PullRequestsDashboardProvider } from '../api/PullRequestsDashboardProvider'; import Router from 'express-promise-router'; -import { errorHandler } from '@backstage/backend-common'; +import { errorHandler, UrlReaders } from '@backstage/backend-common'; import express from 'express'; const DEFAULT_TOP = 10; @@ -46,12 +46,13 @@ export async function createRouter( const token = config.getString('token'); const host = config.getString('host'); const organization = config.getString('organization'); + const reader = UrlReaders.default(options); const authHandler = getPersonalAccessTokenHandler(token); const webApi = new WebApi(`https://${host}/${organization}`, authHandler); const azureDevOpsApi = - options.azureDevOpsApi || new AzureDevOpsApi(logger, webApi); + options.azureDevOpsApi || new AzureDevOpsApi(logger, webApi, reader); const pullRequestsDashboardProvider = await PullRequestsDashboardProvider.create(logger, azureDevOpsApi); @@ -191,6 +192,20 @@ export async function createRouter( res.status(200).json(teamIds); }); + router.get('/readme/:projectName/:repoName', async (req, res) => { + const { projectName, repoName } = req.params; + const content = await azureDevOpsApi.getReadme( + host, + organization, + projectName, + repoName, + ); + res.status(200).json({ + content, + url: `https://${host}/${organization}/${projectName}/_git/${repoName}?path=README.md`, + }); + }); + router.use(errorHandler()); return router; } diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts index 7a0d0a279e..0627fba1f3 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts @@ -33,6 +33,7 @@ import { import { IdentityRef } from 'azure-devops-node-api/interfaces/common/VSSInterfaces'; import { PolicyEvaluationRecord } from 'azure-devops-node-api/interfaces/PolicyInterfaces'; +import PathUtils from 'path'; export function convertDashboardPullRequest( pullRequest: GitPullRequest, @@ -205,6 +206,29 @@ export function convertPolicy( }; } +export async function replaceReadme( + content: string, + getContentFile: (path: string, encoding?: BufferEncoding) => Promise, +) { + const regExp = + /\[([^\[\]]*)\]\((?!https?:\/\/)(.*?)(\.png|\.jpg|\.jpeg|\.gif|\.webp)(.*)\)/gim; + const filesPath = content.match(regExp) || []; + + if (filesPath.length === 0) return content; + + let replacedContent = content; + for (const filePath of filesPath) { + const { label, path, ext } = getPartsFromFilePath(filePath); + const mime = getMimeByExtension(ext); + const base64 = await getContentFile(path, 'base64'); + replacedContent = replacedContent.replace( + filePath, + `[${label}](data:${mime};base64,${base64})`, + ); + } + return replacedContent; +} + function convertReviewer( identityRef?: IdentityRefWithVote, ): Reviewer | undefined { @@ -263,3 +287,29 @@ function convertCreatedBy(identityRef?: IdentityRef): CreatedBy | undefined { function hasAutoComplete(pullRequest: GitPullRequest): boolean { return pullRequest.isDraft !== true && !!pullRequest.completionOptions; } + +function getPartsFromFilePath(content: string): { + label: string; + path: string; + ext: string; +} { + const regExp = /\[(.*?)\]\(([^)]+)\)/; + const [_, label, path] = regExp.exec(content) || []; + return { + label, + path: path.startsWith('.') ? path.substring(1, path.length) : path, + ext: PathUtils.extname(path), + }; +} + +function getMimeByExtension(ext: string): string { + return ( + { + '.png': 'image/png', + '.jpg': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.gif': 'image/gif', + '.webp': 'image/webp', + }[ext] || '' + ); +} diff --git a/plugins/azure-devops-common/src/types.ts b/plugins/azure-devops-common/src/types.ts index db2813dec1..f29b134ed9 100644 --- a/plugins/azure-devops-common/src/types.ts +++ b/plugins/azure-devops-common/src/types.ts @@ -192,6 +192,16 @@ export interface Team { members?: string[]; } +export interface ReadmeConfig { + project: string; + repo: string; +} + +export interface Readme { + url: string; + content: string; +} + export interface TeamMember { id?: string; displayName?: string; diff --git a/plugins/azure-devops/src/api/AzureDevOpsApi.ts b/plugins/azure-devops/src/api/AzureDevOpsApi.ts index ccedc401f1..1959d0389a 100644 --- a/plugins/azure-devops/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops/src/api/AzureDevOpsApi.ts @@ -21,6 +21,8 @@ import { GitTag, PullRequest, PullRequestOptions, + Readme, + ReadmeConfig, RepoBuild, RepoBuildOptions, Team, @@ -64,4 +66,6 @@ export interface AzureDevOpsApi { definitionName?: string, options?: BuildRunOptions, ): Promise<{ items: BuildRun[] }>; + + getReadme(opts: ReadmeConfig): Promise; } diff --git a/plugins/azure-devops/src/api/AzureDevOpsClient.ts b/plugins/azure-devops/src/api/AzureDevOpsClient.ts index 61c8479d71..f9384a0549 100644 --- a/plugins/azure-devops/src/api/AzureDevOpsClient.ts +++ b/plugins/azure-devops/src/api/AzureDevOpsClient.ts @@ -21,6 +21,8 @@ import { GitTag, PullRequest, PullRequestOptions, + Readme, + ReadmeConfig, RepoBuild, RepoBuildOptions, Team, @@ -30,6 +32,10 @@ import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; import { AzureDevOpsApi } from './AzureDevOpsApi'; import { ResponseError } from '@backstage/errors'; +function isNotFoundError(error: any): error is ResponseError { + return error.response.status === 404; +} + export class AzureDevOpsClient implements AzureDevOpsApi { private readonly discoveryApi: DiscoveryApi; private readonly identityApi: IdentityApi; @@ -130,6 +136,23 @@ export class AzureDevOpsClient implements AzureDevOpsApi { return { items }; } + public getReadme = async ( + opts: ReadmeConfig, + ): Promise => { + try { + return await this.get( + `readme/${encodeURIComponent(opts.project)}/${encodeURIComponent( + opts.repo, + )}`, + ); + } catch (e) { + if (isNotFoundError(e)) { + return undefined; + } + return e; + } + }; + private async get(path: string): Promise { const baseUrl = `${await this.discoveryApi.getBaseUrl('azure-devops')}/`; const url = new URL(path, baseUrl); diff --git a/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx b/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx new file mode 100644 index 0000000000..662af0d004 --- /dev/null +++ b/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx @@ -0,0 +1,132 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Button, makeStyles } from '@material-ui/core'; +import { Alert } from '@material-ui/lab'; +import { + InfoCard, + Progress, + MarkdownContent, + EmptyState, +} from '@backstage/core-components'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import { useProjectRepoFromEntity } from '../../hooks'; +import { useApi } from '@backstage/core-plugin-api'; +import React from 'react'; +import { azureDevOpsApiRef } from '../../api'; +import useAsync from 'react-use/lib/useAsync'; + +const useStyles = makeStyles(theme => ({ + infoCard: { + marginBottom: theme.spacing(3), + '& + .MuiAlert-root': { + marginTop: theme.spacing(3), + }, + '& .MuiCardContent-root': { + padding: theme.spacing(2, 1, 2, 2), + }, + }, + readMe: { + overflowY: 'auto', + paddingRight: theme.spacing(1), + '&::-webkit-scrollbar-track': { + backgroundColor: '#F5F5F5', + borderRadius: '5px', + }, + '&::-webkit-scrollbar': { + width: '5px', + backgroundColor: '#F5F5F5', + borderRadius: '5px', + }, + '&::-webkit-scrollbar-thumb': { + border: '1px solid #555555', + backgroundColor: '#555', + borderRadius: '4px', + }, + }, +})); + +type Props = { + maxHeight?: number; +}; + +export const ReadMeCard = (props: Props) => { + const classes = useStyles(); + const api = useApi(azureDevOpsApiRef); + const { entity } = useEntity(); + const { project, repo } = useProjectRepoFromEntity(entity); + + const { loading, error, value } = useAsync( + () => + api.getReadme({ + project, + repo, + }), + [api, project, repo, entity], + ); + + if (loading) { + return ; + } else if (error) { + return ( + + {error.message} + + ); + } + + if (!value) + return ( + + Read more + + } + /> + ); + + return ( + { + e.preventDefault(); + window.open(value?.url); + }, + }} + > +
+ +
+
+ ); +}; diff --git a/plugins/azure-devops/src/components/ReadMeCard/index.ts b/plugins/azure-devops/src/components/ReadMeCard/index.ts new file mode 100644 index 0000000000..7c53fb481b --- /dev/null +++ b/plugins/azure-devops/src/components/ReadMeCard/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { ReadMeCard } from './ReadMeCard'; diff --git a/plugins/azure-devops/src/index.ts b/plugins/azure-devops/src/index.ts index e65c1d02a3..84bab54cbf 100644 --- a/plugins/azure-devops/src/index.ts +++ b/plugins/azure-devops/src/index.ts @@ -19,6 +19,7 @@ export { EntityAzurePipelinesContent, EntityAzureGitTagsContent, EntityAzurePullRequestsContent, + EntityAzureReadMeContent, isAzureDevOpsAvailable, isAzurePipelinesAvailable, AzurePullRequestsPage, From 05cf5f17622e12018631041a3cde6c19d07d0b70 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Thu, 11 Aug 2022 16:18:01 +0100 Subject: [PATCH 026/275] chore: add forgotten file Signed-off-by: Alisson Fabiano --- plugins/azure-devops/src/plugin.ts | 9 +++++++++ plugins/azure-devops/src/routes.ts | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/plugins/azure-devops/src/plugin.ts b/plugins/azure-devops/src/plugin.ts index ccd183eee9..eaed6e2af9 100644 --- a/plugins/azure-devops/src/plugin.ts +++ b/plugins/azure-devops/src/plugin.ts @@ -24,6 +24,7 @@ import { azurePullRequestDashboardRouteRef, azureGitTagsEntityContentRouteRef, azurePullRequestsEntityContentRouteRef, + azureReadMeEntityContentRouteRef, } from './routes'; import { createApiFactory, @@ -100,3 +101,11 @@ export const EntityAzurePullRequestsContent = azureDevOpsPlugin.provide( mountPoint: azurePullRequestsEntityContentRouteRef, }), ); + +export const EntityAzureReadMeContent = azureDevOpsPlugin.provide( + createRoutableExtension({ + name: 'EntityAzureReadMeContent', + component: () => import('./components/ReadMeCard').then(m => m.ReadMeCard), + mountPoint: azureReadMeEntityContentRouteRef, + }), +); diff --git a/plugins/azure-devops/src/routes.ts b/plugins/azure-devops/src/routes.ts index 4ed35bbe12..418cd89a53 100644 --- a/plugins/azure-devops/src/routes.ts +++ b/plugins/azure-devops/src/routes.ts @@ -31,3 +31,7 @@ export const azureGitTagsEntityContentRouteRef = createRouteRef({ export const azurePullRequestsEntityContentRouteRef = createRouteRef({ id: 'azure-pull-requests-entity-content', }); + +export const azureReadMeEntityContentRouteRef = createRouteRef({ + id: 'azure-read-me-entity-content', +}); From a648bcfb16e8a252640fb9d8410a1b7bffcf0bb3 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 12 Aug 2022 09:46:21 +0100 Subject: [PATCH 027/275] fix: adjust regex to extract parts of path Signed-off-by: Alisson Fabiano --- .../src/utils/azure-devops-utils.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts index 0627fba1f3..ce23fe8ef1 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts @@ -33,7 +33,6 @@ import { import { IdentityRef } from 'azure-devops-node-api/interfaces/common/VSSInterfaces'; import { PolicyEvaluationRecord } from 'azure-devops-node-api/interfaces/PolicyInterfaces'; -import PathUtils from 'path'; export function convertDashboardPullRequest( pullRequest: GitPullRequest, @@ -220,7 +219,7 @@ export async function replaceReadme( for (const filePath of filesPath) { const { label, path, ext } = getPartsFromFilePath(filePath); const mime = getMimeByExtension(ext); - const base64 = await getContentFile(path, 'base64'); + const base64 = await getContentFile(path + ext, 'base64'); replacedContent = replacedContent.replace( filePath, `[${label}](data:${mime};base64,${base64})`, @@ -293,12 +292,13 @@ function getPartsFromFilePath(content: string): { path: string; ext: string; } { - const regExp = /\[(.*?)\]\(([^)]+)\)/; - const [_, label, path] = regExp.exec(content) || []; + const regExp = + /\[(.*?)\]\((?!https?:\/\/)(.*?)(\.png|\.jpg|\.jpeg|\.gif|\.webp)(.*)\)/; + const [_, label, path, ext] = regExp.exec(content) || []; return { + ext, label, path: path.startsWith('.') ? path.substring(1, path.length) : path, - ext: PathUtils.extname(path), }; } From b38eddb0f8b31d86a39d4ca04c9270cd7d4b444e Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 12 Aug 2022 10:35:46 +0100 Subject: [PATCH 028/275] chore: a little refactoring on files Signed-off-by: Alisson Fabiano --- .../src/api/AzureDevOpsApi.ts | 24 +++++++++---- .../src/service/router.ts | 7 ++-- .../src/utils/azure-devops-utils.ts | 35 +++++++++++-------- plugins/azure-devops/src/routes.ts | 2 +- 4 files changed, 42 insertions(+), 26 deletions(-) diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index 453f28809a..f737eac28b 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -402,17 +402,29 @@ export class AzureDevOpsApi { organization: string, projectName: string, repoName: string, - ): Promise { - const getContentFile = async ( + ): Promise<{ + url: string; + content: string; + }> { + const getFileContent = async ( path: string, encoding?: BufferEncoding, - ): Promise => { + ): Promise<{ + url: string; + content: string; + }> => { const url = `https://${host}/${organization}/${projectName}/_git/${repoName}?path=${path}`; const response = await this.urlReader.read(url); - return Buffer.from(response).toString(encoding); + return { + url, + content: Buffer.from(response).toString(encoding), + }; + }; + const { url, content } = await getFileContent('README.md'); + return { + url, + content: await replaceReadme(content, getFileContent), }; - const readmeContent = await getContentFile('README.md'); - return await replaceReadme(readmeContent, getContentFile); } } diff --git a/plugins/azure-devops-backend/src/service/router.ts b/plugins/azure-devops-backend/src/service/router.ts index 36bacba8be..8ea9b20e2c 100644 --- a/plugins/azure-devops-backend/src/service/router.ts +++ b/plugins/azure-devops-backend/src/service/router.ts @@ -194,16 +194,13 @@ export async function createRouter( router.get('/readme/:projectName/:repoName', async (req, res) => { const { projectName, repoName } = req.params; - const content = await azureDevOpsApi.getReadme( + const readme = await azureDevOpsApi.getReadme( host, organization, projectName, repoName, ); - res.status(200).json({ - content, - url: `https://${host}/${organization}/${projectName}/_git/${repoName}?path=README.md`, - }); + res.status(200).json(readme); }); router.use(errorHandler()); diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts index ce23fe8ef1..bf82ed265b 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts @@ -206,26 +206,27 @@ export function convertPolicy( } export async function replaceReadme( - content: string, - getContentFile: (path: string, encoding?: BufferEncoding) => Promise, + readme: string, + getFileContent: ( + path: string, + encoding?: BufferEncoding, + ) => Promise<{ + url: string; + content: string; + }>, ) { - const regExp = - /\[([^\[\]]*)\]\((?!https?:\/\/)(.*?)(\.png|\.jpg|\.jpeg|\.gif|\.webp)(.*)\)/gim; - const filesPath = content.match(regExp) || []; - - if (filesPath.length === 0) return content; - - let replacedContent = content; + const filesPath = extractAssets(readme); + let content = readme; for (const filePath of filesPath) { - const { label, path, ext } = getPartsFromFilePath(filePath); + const { label, path, ext } = extractPartsFromAsset(filePath); const mime = getMimeByExtension(ext); - const base64 = await getContentFile(path + ext, 'base64'); - replacedContent = replacedContent.replace( + const { content: base64 } = await getFileContent(path + ext, 'base64'); + content = content.replace( filePath, `[${label}](data:${mime};base64,${base64})`, ); } - return replacedContent; + return content; } function convertReviewer( @@ -287,7 +288,13 @@ function hasAutoComplete(pullRequest: GitPullRequest): boolean { return pullRequest.isDraft !== true && !!pullRequest.completionOptions; } -function getPartsFromFilePath(content: string): { +function extractAssets(content: string) { + const regExp = + /\[([^\[\]]*)\]\((?!https?:\/\/)(.*?)(\.png|\.jpg|\.jpeg|\.gif|\.webp)(.*)\)/gim; + return content.match(regExp) || []; +} + +function extractPartsFromAsset(content: string): { label: string; path: string; ext: string; diff --git a/plugins/azure-devops/src/routes.ts b/plugins/azure-devops/src/routes.ts index 418cd89a53..5280457bae 100644 --- a/plugins/azure-devops/src/routes.ts +++ b/plugins/azure-devops/src/routes.ts @@ -33,5 +33,5 @@ export const azurePullRequestsEntityContentRouteRef = createRouteRef({ }); export const azureReadMeEntityContentRouteRef = createRouteRef({ - id: 'azure-read-me-entity-content', + id: 'azure-readme-entity-content', }); From 1f083b4d0485db2d834e000678dba38e671b8d2e Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 12 Aug 2022 12:05:31 +0100 Subject: [PATCH 029/275] chore: includes units tests for readme converter Signed-off-by: Alisson Fabiano --- .../src/utils/azure-devops-utils.test.ts | 128 ++++++++++++++++++ .../src/utils/azure-devops-utils.ts | 30 ++-- 2 files changed, 144 insertions(+), 14 deletions(-) diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts index 8aed436710..c9bde296f6 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts @@ -21,9 +21,13 @@ import { } from '@backstage/plugin-azure-devops-common'; import { convertDashboardPullRequest, + extractAssets, + extractPartsFromAsset, getArtifactId, getAvatarUrl, + getMimeByExtension, getPullRequestLink, + replaceReadme, } from './azure-devops-utils'; import { GitPullRequest } from 'azure-devops-node-api/interfaces/GitInterfaces'; @@ -159,3 +163,127 @@ describe('getArtifactId', () => { expect(result).toBe('vstfs:///CodeReview/CodeReviewId/project1/1'); }); }); + +describe('extractAssets', () => { + it('should return assets', () => { + const readme = ` + ## Images + ![Image 1](./images/sample-4(2).png) + ![Image 2](./images/cdCSj+-012340.jpg) + ![Image 3](/images/test-4(2)))).jpeg) + ![Image 4](./images/test-2211jd.webp) + ![Image 5](/images/sa)mple.gif) + `; + const result = extractAssets(readme); + expect(result).toEqual([ + '[Image 1](./images/sample-4(2).png)', + '[Image 2](./images/cdCSj+-012340.jpg)', + '[Image 3](/images/test-4(2)))).jpeg)', + '[Image 4](./images/test-2211jd.webp)', + '[Image 5](/images/sa)mple.gif)', + ]); + }); +}); + +describe('extractPartsFromAsset', () => { + it('should return parts from asset - PNG', () => { + const result = extractPartsFromAsset('[Image 1](./images/sample-4(2).png)'); + expect(result).toEqual({ + label: 'Image 1', + path: '/images/sample-4(2)', + ext: '.png', + }); + }); + + it('should return parts from asset - JPG', () => { + const result = extractPartsFromAsset( + '[Image 2](./images/cdCSj+-012340.jpg)', + ); + expect(result).toEqual({ + label: 'Image 2', + path: '/images/cdCSj+-012340', + ext: '.jpg', + }); + }); + + it('should return parts from asset - JPEG', () => { + const result = extractPartsFromAsset( + '[Image 2](/images/test-4(2)))).jpeg)', + ); + expect(result).toEqual({ + label: 'Image 2', + path: '/images/test-4(2))))', + ext: '.jpeg', + }); + }); + + it('should return parts from asset - WEBP', () => { + const result = extractPartsFromAsset('[Image 2](/images/test-2211jd.webp)'); + expect(result).toEqual({ + label: 'Image 2', + path: '/images/test-2211jd', + ext: '.webp', + }); + }); + + it('should return parts from asset - GIF', () => { + const result = extractPartsFromAsset('[Image 2](/images/test-4(2)))).gif)'); + expect(result).toEqual({ + label: 'Image 2', + path: '/images/test-4(2))))', + ext: '.gif', + }); + }); +}); + +describe('getMimeByExtension', () => { + it('should return mime type', () => { + expect(getMimeByExtension('.png')).toBe('image/png'); + expect(getMimeByExtension('.jpg')).toBe('image/jpeg'); + expect(getMimeByExtension('.jpeg')).toBe('image/jpeg'); + expect(getMimeByExtension('.webp')).toBe('image/webp'); + expect(getMimeByExtension('.gif')).toBe('image/gif'); + }); +}); + +describe('replaceReadme', () => { + it('should return mime type', async () => { + const readme = ` + ## Images + ![Image 1](./images/sample-4(2).png) + ![Image 2](./images/cdCSj+-012340.jpg) + ![Image 3](/images/test-4(2)))).jpeg) + ![Image 4](./images/test-2211jd.webp) + ![Image 5](/images/sa)mple.gif) + `; + + async function mockFileContent( + path: string, + encoding?: BufferEncoding, + ): Promise<{ + url: string; + content: string; + }> { + expect(encoding).toBe('base64'); + return new Promise(resolve => + resolve({ + url: '', + content: Buffer.from(path).toString(encoding), + }), + ); + } + + const result = await replaceReadme(readme, mockFileContent); + + const expected = ` + ## Images + ![Image 1](data:image/png;base64,L2ltYWdlcy9zYW1wbGUtNCgyKS5wbmc=) + ![Image 2](data:image/jpeg;base64,L2ltYWdlcy9jZENTaistMDEyMzQwLmpwZw==) + ![Image 3](data:image/jpeg;base64,L2ltYWdlcy90ZXN0LTQoMikpKSkuanBlZw==) + ![Image 4](data:image/webp;base64,L2ltYWdlcy90ZXN0LTIyMTFqZC53ZWJw) + ![Image 5](data:image/gif;base64,L2ltYWdlcy9zYSltcGxlLmdpZg==) + `; + + expect(expected).toBe(result); + }); +}); diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts index bf82ed265b..ab5a4113d2 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts @@ -216,17 +216,19 @@ export async function replaceReadme( }>, ) { const filesPath = extractAssets(readme); - let content = readme; - for (const filePath of filesPath) { - const { label, path, ext } = extractPartsFromAsset(filePath); - const mime = getMimeByExtension(ext); - const { content: base64 } = await getFileContent(path + ext, 'base64'); - content = content.replace( - filePath, - `[${label}](data:${mime};base64,${base64})`, - ); - } - return content; + return await filesPath.reduce( + async (promise: Promise, filePath: string) => + promise.then(async content => { + const { label, path, ext } = extractPartsFromAsset(filePath); + const mime = getMimeByExtension(ext); + const file = await getFileContent(path + ext, 'base64'); + return content.replace( + filePath, + `[${label}](data:${mime};base64,${file.content})`, + ); + }), + Promise.resolve(readme), + ); } function convertReviewer( @@ -288,13 +290,13 @@ function hasAutoComplete(pullRequest: GitPullRequest): boolean { return pullRequest.isDraft !== true && !!pullRequest.completionOptions; } -function extractAssets(content: string) { +export function extractAssets(content: string) { const regExp = /\[([^\[\]]*)\]\((?!https?:\/\/)(.*?)(\.png|\.jpg|\.jpeg|\.gif|\.webp)(.*)\)/gim; return content.match(regExp) || []; } -function extractPartsFromAsset(content: string): { +export function extractPartsFromAsset(content: string): { label: string; path: string; ext: string; @@ -309,7 +311,7 @@ function extractPartsFromAsset(content: string): { }; } -function getMimeByExtension(ext: string): string { +export function getMimeByExtension(ext: string): string { return ( { '.png': 'image/png', From 562bd906fdd930e6045b0d0ab2a0b7fdf86ff995 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 12 Aug 2022 12:09:08 +0100 Subject: [PATCH 030/275] fix: adjusted router test Signed-off-by: Alisson Fabiano --- .../src/service/router.test.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/azure-devops-backend/src/service/router.test.ts b/plugins/azure-devops-backend/src/service/router.test.ts index 063d80b9a0..717a716b77 100644 --- a/plugins/azure-devops-backend/src/service/router.test.ts +++ b/plugins/azure-devops-backend/src/service/router.test.ts @@ -459,8 +459,14 @@ describe('createRouter', () => { describe('GET /readme/:projectName/:repoName', () => { it('fetches readme file', async () => { - const readmeMock = getReadmeMock(); - azureDevOpsApi.getReadme.mockResolvedValueOnce(readmeMock); + const content = getReadmeMock(); + const url = `https://host.com/myOrg/myProject/_git/myRepo?path=README.md`; + + azureDevOpsApi.getReadme.mockResolvedValueOnce({ + content, + url, + }); + const response = await request(app).get( '/readme/myProject/myRepo?path=README.md', ); @@ -472,8 +478,8 @@ describe('createRouter', () => { ); expect(response.status).toEqual(200); expect(response.body).toEqual({ - content: readmeMock, - url: `https://host.com/myOrg/myProject/_git/myRepo?path=README.md`, + content, + url, }); }); }); From f253a8e65f6292b5c84fc8eb928fcf3934a81529 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 12 Aug 2022 16:48:36 +0100 Subject: [PATCH 031/275] chore: change readme name on files Signed-off-by: Alisson Fabiano --- .../src/components/ReadMeCard/ReadMeCard.tsx | 2 +- .../azure-devops/src/components/ReadMeCard/index.ts | 2 +- plugins/azure-devops/src/index.ts | 2 +- plugins/azure-devops/src/plugin.ts | 10 +++++----- plugins/azure-devops/src/routes.ts | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx b/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx index 662af0d004..29031514e8 100644 --- a/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx +++ b/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx @@ -63,7 +63,7 @@ type Props = { maxHeight?: number; }; -export const ReadMeCard = (props: Props) => { +export const ReadmeCard = (props: Props) => { const classes = useStyles(); const api = useApi(azureDevOpsApiRef); const { entity } = useEntity(); diff --git a/plugins/azure-devops/src/components/ReadMeCard/index.ts b/plugins/azure-devops/src/components/ReadMeCard/index.ts index 7c53fb481b..9b92a0eaf1 100644 --- a/plugins/azure-devops/src/components/ReadMeCard/index.ts +++ b/plugins/azure-devops/src/components/ReadMeCard/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { ReadMeCard } from './ReadMeCard'; +export { ReadmeCard } from './ReadmeCard'; diff --git a/plugins/azure-devops/src/index.ts b/plugins/azure-devops/src/index.ts index 84bab54cbf..37e85b7422 100644 --- a/plugins/azure-devops/src/index.ts +++ b/plugins/azure-devops/src/index.ts @@ -19,7 +19,7 @@ export { EntityAzurePipelinesContent, EntityAzureGitTagsContent, EntityAzurePullRequestsContent, - EntityAzureReadMeContent, + EntityAzureReadmeCard, isAzureDevOpsAvailable, isAzurePipelinesAvailable, AzurePullRequestsPage, diff --git a/plugins/azure-devops/src/plugin.ts b/plugins/azure-devops/src/plugin.ts index eaed6e2af9..b9fb95d9aa 100644 --- a/plugins/azure-devops/src/plugin.ts +++ b/plugins/azure-devops/src/plugin.ts @@ -24,7 +24,7 @@ import { azurePullRequestDashboardRouteRef, azureGitTagsEntityContentRouteRef, azurePullRequestsEntityContentRouteRef, - azureReadMeEntityContentRouteRef, + azureReadmeEntityCardRouteRef, } from './routes'; import { createApiFactory, @@ -102,10 +102,10 @@ export const EntityAzurePullRequestsContent = azureDevOpsPlugin.provide( }), ); -export const EntityAzureReadMeContent = azureDevOpsPlugin.provide( +export const EntityAzureReadmeCard = azureDevOpsPlugin.provide( createRoutableExtension({ - name: 'EntityAzureReadMeContent', - component: () => import('./components/ReadMeCard').then(m => m.ReadMeCard), - mountPoint: azureReadMeEntityContentRouteRef, + name: 'EntityAzureReadmeCard', + component: () => import('./components/ReadmeCard').then(m => m.ReadmeCard), + mountPoint: azureReadmeEntityCardRouteRef, }), ); diff --git a/plugins/azure-devops/src/routes.ts b/plugins/azure-devops/src/routes.ts index 5280457bae..3efce043a8 100644 --- a/plugins/azure-devops/src/routes.ts +++ b/plugins/azure-devops/src/routes.ts @@ -32,6 +32,6 @@ export const azurePullRequestsEntityContentRouteRef = createRouteRef({ id: 'azure-pull-requests-entity-content', }); -export const azureReadMeEntityContentRouteRef = createRouteRef({ - id: 'azure-readme-entity-content', +export const azureReadmeEntityCardRouteRef = createRouteRef({ + id: 'azure-readme-entity-card', }); From b3bafea79a517d5c69e4176d045c73411d46a46a Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 12 Aug 2022 16:53:57 +0100 Subject: [PATCH 032/275] docs: create readme documentation Signed-off-by: Alisson Fabiano --- plugins/azure-devops/README.md | 51 ++++++++++++++++++ .../azure-devops/docs/azure-devops-readme.png | Bin 0 -> 2877186 bytes 2 files changed, 51 insertions(+) create mode 100644 plugins/azure-devops/docs/azure-devops-readme.png diff --git a/plugins/azure-devops/README.md b/plugins/azure-devops/README.md index 68d2b57afc..47835268b3 100644 --- a/plugins/azure-devops/README.md +++ b/plugins/azure-devops/README.md @@ -22,6 +22,12 @@ Lists all Git Tags for a given repository ![Azure Repos Git Tags Example](./docs/azure-devops-git-tags.png) +### Azure Readme + +Readme for a given repository + +![Azure Readme Example](./docs/azure-devops-readme.png) + ## Setup The following sections will help you get the Azure DevOps plugin setup and running @@ -197,6 +203,51 @@ To get the Git Tags component working you'll need to do the following two steps: - You'll need to add the `EntityLayout.Route` above from step 2 to all the entity sections you want to see Git Tags in. For example if you wanted to see Git Tags when looking at Website entities then you would need to add this to the `websiteEntityPage` section. - The `if` prop is optional on the `EntityLayout.Route`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation +### Git README + +To get the README component working you'll need to do the following two steps: + +1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: + + ```bash + # From your Backstage root directory + yarn add --cwd packages/app @backstage/plugin-azure-devops + ``` + +2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: + + ```tsx + // In packages/app/src/components/catalog/EntityPage.tsx + import { + EntityAzureReadmeCard, + isAzureDevOpsAvailable, + } from '@backstage/plugin-azure-devops'; + + // As it is a card, you can customize it the way you prefer + // For example in the Service section + + const overviewContent = ( + + + + + ... + + + + + + + + ); + ``` + +**Notes:** + +- You'll need to add the `EntitySwitch.Case` above from step 2 to all the entity sections you want to see Readme in. For example if you wanted to see Readme when looking at Website entities then you would need to add this to the `websiteEntityPage` section. +- The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation +- The `maxHeight` property on the `EntityAzureReadmeCard` will set the maximum screen size you would like to see, if not set it will default to 100% + ## Limitations - Currently multiple organizations are not supported diff --git a/plugins/azure-devops/docs/azure-devops-readme.png b/plugins/azure-devops/docs/azure-devops-readme.png new file mode 100644 index 0000000000000000000000000000000000000000..cac087f685bcf3c1ba1072c596171b68562f1c00 GIT binary patch literal 2877186 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

34T3;XjWLt6|l=$THsRIkD*3Yj749!e87{zi> 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 z

9m029F}XYKPIt10x=S^0mN9~hg#IEPaV6B9zFq|p|7?+0f-jWxs!C_b!#@-eE7 zebn)C%2Ng5N`~r_*UXvKB+>eRB1mY0_TSGa%R~IqhxydKxW)odD5+#J@kxg42gc|W zd1DY9O|n~QPHL15d$Q>6S9aCtNliPj=nb!_D&8Ay$M|dqUo*#v5zu6fZ=DRp-ZQq) ze{|`n;*Xt@cszG+!YOG4_$J}VM%Ij{s_i(~&oZxbnRM9^wRF=l=_`^4%3sRlHheu| zsC3YAe?SjJDUQ$)OM}H>Ie6DjY2}mf!eX|k`-9eJUUb`S?bDw;VtfMueB6kU*NcGH~9Tpp1hfWJtI0o_?hrtrGB z7QCaXs;M4-vyzb9defuq*$9cmzPW35jfF@{uRw!L!wOZ9d;QfXGpMOd38B)h-93 zw`-}+)RBBqLXsQg%vL^8juPKCc7QhJt_FL+UoWotvGnfJf74m2 z7iITTr;+3A``Ju#E#5&h8=M+EpU541Ba-C~QlGJs~y5|J}^6 zpM(Z$*0|ez_z|D;pQGlYlS)skp+HlUo##rB@5^icoQ~p@aT{UM(S?D$gz1IYME?7H zZ#45v+-Gr~5a`X>-JXouK7qdJP>e$p?6WMLQ}uIg)Z-B_qrTM{FMSS3YjmNglFUhU z5G^qXA8BJFv`6ZTYm0wAHu8MfaC<-9I5YFX`ECmGi%KLM)kdL4k{|UIDBqj#SN$Zt zk1EM30_r@T60B~p`MUf1(&FFgcV3S&J$&83YXv#%1po#Jn_6$Has~_FsTcEcF`?E!LOT$RSpgmX+**BfD1caI}vV$A_+$TytXqA{a~lguVt>t7Fvh7bpG zm;wUbF;7!MfODz*|LF)EP>%j(F~0 zxb^(Gk?ZKN|4grn$c5#0ivud_TE>&TkO^2#wp*XlT1L?S>MLiackCk-RVfdYH;7ez z8fY(!(&;?=ZaSUWkl{V@fYMI5AclV@wrP{i|Q zmO9s=x~1Q+`M4SdKE7&RHaZhmx>WsCZQ7gJUu|uLK5%Okv~!x8?002)TS=JKBuoWk zavWeC5w*Q|H)ge->R1>2hs25Cwo&0Vc2;uxs+io%1TNG8DB4~zv_zw?fvn&PvZY#n z;Q+eBwvNGL*&EcD+4>l z1uVLhD^vEtw(~+?lbIua9UdoAlF5~D3$~lu$!yb2$%^hU_>Tz_|35ZRIsv53lRe%g zpFP%zSlw8J0%y#T`sSclS-w%`ZUGdtZ9X%1b&bJQktoCl|&M5lAJ1O#;-YR!`J#J8`>D=VC2n*3kNGpeC=mROd#*sdzhv z1ice(+2b?f5x$5Zz0?(heI!H_AKh_hTrUm!53vv$SN|^nyFf(0P0w~Pacj7Sbxk~Q zZa^-KDPlqGU>yx3bquPYp?_HoJDBgq-WFuEx8fkLZw#34_9>Htbq?(G`w19#m}=1%q+n)0aom*2zq(A@IET%S@>xt2qOBG- zxt`=+s1)s}k+TO{*yqFMIMzSSf+w`a?bYp&)Wm|``RvfC0QXJQ>CS!yu&_Z8YC5yt zzHEbF^Z&=*UqDxtZQH`|lD*^Z?g;@x(BSUw?(XjH?(PyGIKc^!1VRM&DkvzW+^H%k zq^K&=zdq(Bb?Tmb-n;jI_q4D5-)mW|jjX-rnrq4!W6m{ac3*vANvje&$MWJ5NFnF*%E_MRCvazmf z^hW{nI8tJHt+)f{gR-o@v4&YOCI)%iVQ4t@6QLp8-c*3JYVL+&kL*MrD&u6JT!4l? zi58q`X<}nF?)_p742##%)yolOSdTC>S9H-)*3F8oJ?O{BOpKy!Ce-bK%R|RwpoaxB zqG->0PFUu~{UX@l7O}35h^8+ldK)O~qoEDQTeC0=60N#o-z#CIo;haA zy6dPNARs^+NG^e6wJhh81nyI+1_YpErC5{-@wWAwV&xcBVNu!lQlb7R;^oS8<85eL zTOOM*AItLP-ZFbx zM}t5EeTzDB90sC{yC1@=4)8Xqb6+Iku2#c{fZ z>-uj?N8?FCD3)_O|Ly;8}iM4iq=w*6hWP~qzQ}4B@ciE#$Sm7ktoz zrn}ahj}L|w$1!JntYkms*(iIgYK9%kQ%_0U6LfHn#rA&lF+8!i+Mk~<6@r%THYP%Y zJ}hTPKKo?8l)cjg&eLn795BL__7VUx^UN;chV>O)P?y(*F|-+db$FaB8oOwy#r`yN z)3CZ)MPyg0%Qd^R0t?DZjIz&~Vdsh&?C(%}*;{cRPJfk`o8$$}Srb-c=!|5H8o3&S z#_vX#zS~f@OhYy24zJM*O-uIRT;#xU7>v$kilJ4x1hh#ij-ItjqGQFP>T|>5v8WW{ zgL0m%H#7v*g8Wd*$q}W!JkU5Mn05_7ZTeSp&H;5fXI2Z+P~K0N_N;K=e#GRysA$u% zsNHZX1{ZCGmfmit0qJ=eNx8zaGw(B(P;*Tu1Uwlt(h3RG##U6 z9LCyBxtKI`1G@TEMmaMAr99#>Y|I)=nVW?+6^E%1*Y*76`QeAs-k$U=3+i(Z)X}9Z z!tFv3O#7Cg6m2>lT9M9(viHM?UD+5i^9-uEN5D$kS!s__ZHJ@kzIQQT`xOkBa|k_$ zZbhqgc}Qg2Ti0xlervCyeEH7s^$9^(<)Lt+Pk7UA#kme>k^BGy7o5c46&V<@F%J{g z=V09C%b2?H3I;7qLyLZEk<@4k>J8e2ZnM+SbwN66Hk^Q3-4~+yl5}*Om8t-G?dBd+ zEPI`1A4A8v$I*L!8U}2*iYg7qp{RFd^}p`Iqwpv^3Xj60@F+YAkHVwy_^*!t&x7?E zHEQ&qfnxtnk$eADng4tFKLG3fEzJg$`#%VS`yYUJ|6Q=&Ki?tjC_0_%qa~b~$ zu=gLzr~ETu@1L(1%KvNfuLk7*RQ{b{y}a#*6!7ia=g)BO-W|-TS{FSv2W;~T!pVf9 zxH)D5zCM(Svn?87N2mv`SBk^8ZR_KQPEB#IYCO^s!*Hm07}od(LYS+%YaUo$q#i!r ze+0rHCg7y3luhX6mxNXQXXDYO8@QQ$9%obbB7OG(73%8gGYKO52Y!40D?Wd42T#8E z5@f%*WL;IDy6+x;jBh^tSTX4dlikY~fBXf`6NWrF|Mucfyb$2t%RdxT z9zQCO-A}nEk<+d@4%VoIs}o1yo5TC@)7{(nNAYBx64E{hpq z0T}D*fi;muac}iD{KhhW`spWpPPv`D2InVE!?P#Pc|UKa6foocO8M}Y&#+_c5Dat< zqdx60Qgg#(`*@6V2|{vWc|1-%3pQDW?|u3Fg<|Y``SK;@xw7$#*MHhTd-=8yzN+MW z-tbWx-fW$OKSnjf=Pjb~pk_GERxFPBu?d)5su9jC-GL_`Q%AfZgZA6RytliexTSBzxv=lzFsg6pVX>~&)c@fvxZghrdAkG zBOH&5g=3d%1QzLm*zR5&OY8zMO$)|3hjRGEKMHTk1>v`f-gufAg4bm#;b+R7(Be4b z7==w*hzirYM{~xn_TE5|5acID;i^k4=4gTFs0EE}N@!ubwOkW#cd-d&Z71Fbt_hUSQsj;=Tm=z(h!=HULd zd$@4@GLEg7uK-RGnnT|FZKzokd)UpIomt5PrQ2Jtf5e(D%^~6OHkD|A5AS?|C%=D( ztre2cLpLx}cS2TN75wn<3!K@#5fau^nAO(s{HX0veD~q^IJIoG0xpcyG<-g71zx>) ziSOTk2S0!LIsTyO#4kR%eH!bU)K=qUv=)Vn>yF{qAHT+TxkvE)yRVd?CFJsJj)zC@ zW?^jcGU%g4;y|N*c)aU`^5-9)et=cA>Oxqb1Z0B-Iv}BbYP;j3FfZKma>Az`F8IdH z9-qfJ;d&_->{w!kv z1AXwOXDCj4dZ{rWY*hlF8p1jyyrYEb6hPj1o^9bXd7ZWr;G2L}YIE!irtfsI3x=2J zr2c^||KJt?T2)<`pd`ekFoLg%T!oFnwY$%Mg&V0Cj}HPJn+B3RV~x)4R;U_lGi(Qm>n0+3KQ8SWp|InE;*y zXfxZhB!*c0)eouy`cfb+Q`%=mYqqt$VX)6m?57h(7!HbUESqBydL&@PsPj`p#)>l} ztmD_?b_4I-1!|W8JX~?y>W#sME5~mT#&XOE^OFG3gng_5>k}ZCfV5h$YNDBBo`VfG;^w5PCu4K?gojy>BUOoUDfRNPQ0|xLg{R$zVn+~#lnJoV<>&n*suvL#xp(h0_*OGbT*>8Ef zUqEZ4dH=f+PRMWUio2eE3h-2)*ZOeGsxYRyPW{_4-9fR3CfgMQ61(7@TR3%TRbVga zuP~%Zz7|ZAdn7EbFdFvfxR|AdVYME{@gt05zKYdGz(c~)IF9$6(EPBI^P&K;>hb=1 zau(2#5rN)D82TE47(m~WIYR(%LpZj^=)oMnj;cQr-d1d<+Q@zjI8Z=)<*4rx^r22H zy938X)3-JjfL|-#C%`}fJV~GBb8q^G08)i*u_4nGSim^}c|{vyzkfN}*^y&VfUWil ztT~RpC~TE$I3MhO>-WMaw}!qYteXP5m-$lqCG3);ImRS(s)QPz$#zQER|)?t09*+j zyMWgxvpq5|t@EjdGsUW@Ia%shOquQVp*iP;?S|C`=;UW%rW|iLt1&KPNPv?Q#BV91IX?(!Puj4L&ya$~L84f^e+QJe+Jgg}RMa;ko;;P2CN9j14S?;ngalh^IGPXuC+J zi=9M|iVc%}l+dtEX-i>B6!tj@87RImn0l2Tjsy&vYQ(-6^!88eB-Iu!R&uhZE zw~%ccPQRW=zg}0qJ6d{|K?SV{Ml=|V3mG}McKbfo3|)c_&XsAa5c;(y6eyW_6@9yyt6sD`^hJ$6j&3zt8~WW_dmqruRg=I?3-B8 zX$l5f;;@N*ycq6`J4H;qQC4N%(>iZX1Eu-P5(4#B>tXmoWBK`r|98R|OI#UE+$9$4t)ib0W$FuhoJ z?3=Wn57mz_xkw%LTo-o9rlt$Wh&$&+dlk}3nD!=^LDZEEY`3E6FnsjreSG%hI~-WF zlh6Ek&bgl0>lA^k=u+6@7^XrNx2JTXo+ZTZSjq&>L8GXbu?j31gh_mk2rzF9$Jr?A ztgiqiBU@rcNj@j^(p+zFo@BYTeQRRNihW4SzJ%?EPea1lCLa*+T^f@2{R6D0z6)4S zg~An(+&{p2|10@B*skDvf!MyYe98{4H~*3Lk9+rlEnD`8uA9y)`)M>4SY@LB9; zJNK|J0)R_7#Qiwa4<1R!v16Gyb?O4n(q9GCCtyDn(l#R-*;zTbB%r?REZoe?!Oh&f zw}8Gp#hxc3OnUdO=HkKiJbZXp0DU*{@f`|33$X8_+c)swhJ@$6f_JZ6!F&AtfNM)( z^-~Of0`_B`5AN9*`~<{z``RT1;LEvqNdXRzoyt;j^6UkiVcXI(1bmo9$wu0_9Ca>` z6KTwM<|0m=%fhKM7gU(uY?gEJf&c+8s_O@ib4|j2i@t=laA#_U0{yMuE#ZmNvE%T0 zm9`<}6eQg4-Evt!(+OBkWXZPUkPx{`x7q-KB66<^ z)w`8>wn%7OVd|5-!UCAa{AaLu$0@AYlVJniNgX@R+Uk<boX9>qI zJ|zIo5nx*ca1K7da`}ANz_nr~=Ui}pe8c$zd`{isb6^plVAad*RCpZSb_!82q~PEcVwPg6(!0Pyxe4aUR zeG!h+EhpploP(ItathW@+lHcAF;w95d6Q9`Yc_u@?mZ2e%Z}p4(Dk@keJCzOHRhZg zi&b7F(2x4<;}D3>rjJ_F@8|R2<0uU;2Snm}@fv)_S-DO$G0I|(OWd2>ba6&*kQImH zb?itqFg8fTzyJ+%q7Cc|HSuXZ6F;=ou{l&jN>vRX^fvMPQm)?*bi(WY5kNx&=Zjm^ z+OsIvl1;gGJ6uM`n-Scb%`@>qD-8#0(sl=0;_=Y3Xe|I7+I&upAna}*rGP(4P9~ZM zSy076Kvo8NB^YQIA`E2$*wawb(9qD8Yuf-5^;~qO3phpR-d@7l3TVy7OxHc$K%FoP z##T45p}PeqXKEN%-#|_FXHpXl8;2YCVW|^-85xKJh?q zNr;K@QFiDWuc2u;_iTP9qU?pCjL+)g8tN6%(T%dChKVh0bj;(ubE;afwUHHLOX%p$ zd)fpWsK$O*b2iYMeH&OxN4ro9ItJ;eXm4UeeYRl(+g4FiOmOX8Ok_4^+jbfFeWr8MK`m7;GAY;Gc*dY@F^iZZSiY+@P6;XXT;=QOr8 zo#&ez`(l%M7UcHQFf77?$`XFnRmVWuryYH^sDq9$tBt{MYmHD0bMZx6I|I9$J7ZfD z1Nr+je7VfPqVoK_N5{+>8Y)wlYwJ7U%Xvj{poKTOdur%OpJ`105Qe%^E;hThi{{>o zcC7Ep{gNy9K;@#)F47N;+%0J8>xOd9_6VRaN_g7>(3$N8I}yVMx)PusKl{_qOS{{l zgtN{zYiLfN*;0%BkFm$PVw~sJ>B#6QtdkZ5T5KUgM?~o88mys`Kkd!W>#NgdlTBQ2 zX`-vIhHk+o`h~cniKi=)oSDzdL=}#$oaxlr#~M~O(9o$^IsCq)GO`=$Xv;EZMRR}S znx4HSAF*P(vv7>dUrP384L>Ea)6-MP(0LIN3x;UFlqadIFY{aJnM#)O(nr zql~i~230DqSOt>;-QKdoy%qLd>4Wol@9L${G(O0tCyKmaXY%Z1aX>JApp>5#rRjsE z{7pnUYVhT?%0cc}->EJZ)F_I2v~k~J28MF(>KS3LLQf0xd~xo}N^qV_WLw&WX&gJ8 zA3W_4%YBN3FD+u_UMbNB)8jo+i@FuoymszZjPiF!H+u&Kgqy|vlDyFKP3z`B(=n&wJk-WFLVL?@JiFLHY;TRt* za^yafdyF;l4%lDO4)ZyOw6!`YkYE=NSM>69Pyp2`rUhAj`OIn?j(QdY^_?^f@b=`M zts7FpDk#9VyzDuM&nmSSqYfmbZ5i$(<^M~ZgRX6`_R(2DS<&1*!M=)ifVaZ%2X9BY;7>&0mI3U=Ht4P1lEBba;366oku6$5JY!qWMt zFs}VLv`%P+a&{$Dq?;PL2a38>L{xA+bZ$ErZHhEOOJ_T@sn864`|ZV~Nr%w3LVMJs z&AOBuhB8roI3B~{P2H6$*8#;R9-}`ML4aEklql8+?%dbPc=xgQK-qSq&}8*Rj98zI zP9wIXVaw?lc<4R!>NHz1xmT^<3z0GPY%i5s-4Vn+dC5*QFmT@o7&-eCnlu=ShIRX) zNt+31+-5B5HXDr6r8*)!x)DN3c1G!DGthL(K6IFK0s~j(p=IqcC||8Jny$=7=b5Q! zH}eqM&DxJPGY+HmtW?TTbeork{_Ad_R*m5(6Hr$DuetCjJPMD(qwpv^3Xj60@F+a~ ztK3Jg!%a#3v2P;EQH8aH~>roQe-da)dvY zxqD%n=7YID3CJ2b2d}>PN&)rcc=Y96^eki!1KjD~20P>ZakN}44%euNQ{8*u!+nSF=E+a0 z9nbRf@#U3sIN!1gHWv-XEMG6ob9KX|9z*fdSKs4Xwku=rIxLMZhsz5$C~(y;Pk+FN zw{mdz$YI<+aSWfFIjh(_K7a2r?(f`=W8H^habR&s*vUB-cjR^GhF>0jsDM|m{$Lx~ zKC$cTSCrpg;??W70Km7$n?JwDuW1|b@u1pxr&1tp#o6I@f*l^zErQgFMKHoE1`At^ z!1bf2@Z!fWRJh+4FJ9o{m!D(AqM0b?7k~uKU4?tw>=uk|5s7R^B!*~yNQte8pO-IC z{m92_d_QX_Qgv6H*DUzCm_N`U60a+S;ZbxvHadi3z7~wlS`^NiMe#{QCHy&jE?z8N zi*MRC#q}6J+z$xECssear+MO-?u8wi7mo0rZCW_y^7A3eLo*Qfor7`48j3|)5PF%y zMB}H}!j@|uxZk!9@a}smWbupl@^E4EW<1Kv!0WsdN+0wZeDU})&NZ)&173mnX6Y7u zy>uzIdH7+YlLIo??vK~(LeBMDnA@lYI$8V`(@s~GFCxrG0-8Eiw;P_l^FW2!J$*S1 z-8=%YHmMo%AAE@4Sog^zTNFc12kLDp@4FaV7Pr&#aBS}$jI;(SP?<0V-RM1D0SI5< zPo(eMib)<}$f?;F`1%_>W9i>N`4R$0egE!ptV)bm%t8__H905=m&Q%Ug>|cNdFf(2 z*th{tAKYVW@{#}fEu5J$8L3Nm;@2;KV2X^BH+cTrXV_e|oB|?A2*D>2&OjF@b5o-q>%gJ76qrI+Au2u$_Q+1cbQ5@W(i&3)@&Hwq3wF zcbiTD_8-H(=u%j~`sWM#krAaBlY}X30DXM`+a`8dp}Q;KlKA0p%?e>k6fn|+=muC* zrj-IBRcD#)G*kJJ{KI&d9)P7zl`+QfQ$V<}EVDD)*n#?x>vERxo_%?5S4~GJUK1dg z^f}XT#jl1he%1q#t%WI8I{}BTNT`WR-3K8*F%hu$#YDqPv6WQkef2d*RAm{$d{%{L zVU()G&*j+<$rD5w=~42JCyyI3d{>6Z&R?sKT)Z0cn` z%Mg1nram{Zt}m$LKY9N>!v$AZ_WLaR7Huf3GN+jLF!iyOZMn?)UvQqdK_8TGybal> zzD(=Pa)dcT{+TX%9Y#CsGTd;@>Q1{`P|noo&rZ0?x@GPWcD)XUJ(?QkTOh5Dwfwy8 zt?!6!1xzX7h6Q9Lz-j^N_27L9WKEx1qZPw;ws`~XG@pG_AzwvT95ceqcZYRJ$mr_q zXC>-LLiz}hXD8>pC2W5e*4vV86Sg{GauFb%0F?xsCcrxZ9STTG*gkEcYaLLZb{4=> z4YsojpRG*{XEdhm1kfh{KLL7mW&3*>6zWZw%EnT+6Y0~!OeU;-!tf{IeuSlGtz#T* z&UugJ%%jdFB=8L0BOzbsGyf9P6LV>kDZDNKI035)6QqQP7F|e)Q2`5zPG&J}8bz1~ z1w7cDbxBz3`_xSeePBQR>$-grtZ@lez{c686GpMUy{utaaHq++$9ld0j@Y#$_~fF zZ6W!)&<>+HzYpQO*H;gtk9$MHXU*aBIxQj`$HL<2-w|kFiN=*F8}QA7b;v9lj^`75 z;{3EF7+JCt9;O^ZO23hcDNq0~Q}iGOgm0*Oqla@zv@(OKGcWpD0R7sRW5gBHi#12i zzI5EZejV?=`z|(j9!DSX#b!P`gqd`$5r<9mQvpQ_TcUt#M{}Jb&x;`}d!`wUZI&`v z%<~E(Mm;wMu@6VuOh?+r6F7Vz9V=&U!<4S`(XmV~gz{P$?;2RQECnYoUdHa!G;H60 z0?7wYVduef3Z%F7pp8|p;PXF&^@R0KfNLVcw5HCf>FQcRno55QaI?vo{}3{_Knlv1 zyajA{HnD}g74Y0v_CZ463h=G~P$ytI+qHkN>lH}BcR9;-8?&B`O;1328(5!Q7uGlh z*4v+^(u7$~@+pwn-qTpS_Y~Ic<9W|%tlxJ|f%+s}L_*4L-otYC2pG)<0F-oL?o-0L zw;#$-{ZhJm5Vym#xe z3acw&ee<$%k(ZN;OS!gix>s^8<4UeD1KL9VUSYa`3MHR}1HO168(HTsDuA8<{x0QS zR?K~JO@O%PGxOMXo_RepBO7PZvvD--BK923K+2JH#ln|zoIY~kv|{W_PCc*evSP(p$CD7EZSSnD@^tdj;tQV7;}w&#LqKeHqx4Lce31x2!sd#e-L1ch5yg zF4Y#_HK>PtzZm3mj{UC;r@)NI8#5dqas83bx%48RquV(rPv&!> zDc4rr+@f)C!ci=#G>H4ASgxJy0nWEKcyBs^feBhxP<*T zA8{X_ij}RWVE57USbr>w<2oB#+2>71va#)OF1DuHzHd7$p>T7s?PxBxAIrn$qj~D{ z!DAPdY&&`hCo^ti#hfh|Uw05{dDq6A4JUB+{$pG}c?T^cJD_i$Ik@`8_n1F%D`t&c ziTB?50^_O;N59sik&^omhc4d34BBAyfCWg&xP{Z%cQCWp66W88BWc&LeC#GHo4Ora zdrszaC>)Qp(uzTFET0hvrmjKu!ONK0V=-oTnupG1dty`f>DcSm2*(=?!L%cL3_-lKk{zHhg2ADLi5X;0>%k8SO5U`|^*6nC<+UY2=>{d=tA%|$ET zoMoHOYxpxmLvDKu?hoMgQzkBQk6*`8Q%rg@YZ}@NK585@3y4X<75es~MkX@g9 z_1QXFd1-iOhBNl|wL`mLE54zPH&XATLQQP0>x`u(Ex6o7!|Y;)0zWqKZ(tXcv()98~Dy4BI*3?OAs8`<0K%$$DlJt)fY+L&FdR<$n2+4M<%*+Y(Jf) zV>ib|B*#z#_H(G8qXN2hDn^~P)XP0MFKc0qgxkMl>mn>CH;QOyj|OBwDN!gR%A-#OkByK4tvW(kg)vIdUPzcSk!Xv%y7CX^T2 zic*A?vugzR8v$%9?~CF7H_WOlmd@5bRu zu%W<+mdLLZ50r|-x4{vZXZ2EZM;-1R>p8fi3iVQ-W!GUj75RJ;X8HP@d#m$#SCrQh zsDnm)hRHrgn5);>1>lW$7>;poQ zdqE?kF8s z4kdz0pJDFzI$TS%4^2Qdzd%%Rc19If57e-RQU^Y$W_3dmj+w5p#j&#G zIJ9+$;~rB-E$)M=Xnrb0Z#6xXd!w?b&2`7LhW#;d$8{uxwnvk4Ezz#qSk$XN7&U7T z!mvI=v0%n>)Q&HWieb&sYsh|dpS%k-tB*wWR#UO;;t!ZLY(KndKVgQnI2S>D(FUl) zGMbIuf$j@VV$kLswC=M4&00;suwD1jtKKjLDD}43!<|0iZ0c~KeQVcghvC_;&}UdO zN_)k?pXK@Tx+{H2!baar|Ea*8Bf=`7cAs7D}P~o8(^&$p5MQJHdLt|Mmx7J$tDb>3+Z)TzU5jCPtRV za3cukdyhhP>qbb42}Vx2INYyM6!$6@#nn==I2jj$-Qhvl9}$JLgkrc^t15nk20Ii>Y_+ByZ{rue%6>?TF=e_*h2GV;A))N5Vi|20v ze8R%^E3dzLsq#N(rN7SI@s8xDF{kP{zz3;gui`*`}p4@w^&{`MS8j_*Z-Vu>g&;0nzR$E{AVg^v8|T&9Ek@3YPd+#U`JU*kTuhrDiy$YXRy_-6@){ zVow-q1SvDj-y z;8;{u?C^}l9NJ)>CVdaVs*psaRBeKzNsV!T`Fgy0@x9W4wCQWMDW!8KOr@UYYk|n% zJ*eP~{5IkEBqS7@HCLR|{P2sL2hhL~n55y)nHn(A39l>p;`{JmJobpdRXqZSwIC$x z{tB!oz?}8e-7>=$YiWx|EdP5;817SN5>oe#l(EzwFFKXR?Z_f{R@@I5;RI~d)sG-= zmYF~+U%cbwgB0D4=QzAyy9xG0CSZXsjDF5oC;%qS5fVC6092DSdvz98KLOqdKxmfX ztbk!tH76BrCC`k)86z59=o@~9D>RlZKS0PEzQYZ7jMOFks8xaWBz)^4-4z?z9|>zK zV5*T!lMu8U-AZAdQxR-udJ6q`sc#KTaE)O;SFG2fG21>4L(Cw>BsPO>-C>QyD&NZJ z<`9lLEJwgK5*|y!B}%yFj!bK1*rPM;)>ktyinbi=UKx|z;*l3v6enFH>CX}p)v5qE zJ#|OSqK?W4#_M~mo|tJ0+nqfIXuA4G`DWdM4ID4>&uj@T zTh);snP1y4U)HIfLPA~+#XGJH? zqFAm5v3vnL3Ajo0D(qxa`CS;)meVJ8=pOVpU%YD#!94pAc(dNWhwL$_8+ns{rtXCd z!w0u%FY(XmELQ+M0@Pf^Hk_s{C4CR|a-P>78E(jB9b2fc4g9{waKuU0^MqsJN8a-R z=Yy*Q=iu1bsp!WsRo<{uU_Al7bzq&nMNjOLfGov-1YEgrY?FW#%TZ?%?zB05Q$op3r`;E^4H8myE!!hME=Xw5a;!^!v=CM?@h1Vi z2~(cfOwt6<)tvdO(C+ePe-nNemazKF+k|JyCnBMD#~Gfqs{pZG(32uM>c+I5w7D?% z30t6)-G_ag!nO*4YBBpD05k!r&gS>&wAFN$Axv$;G`XDZmw90g=hYGH*FZ}Imb=xW zFMFtQARx&CHo$JQ*Ch6N9n+3d&->WM!?dk1Cx{M(F>^Z4C)y9e&sRUd@pgl$XD=KL zs*LsS70{4v?#TM)Xc2rC1ketys7*hXu+qYAH;}p##$E}{Dj?e9?87n6eZo8^U`Yw< zI-LC!Fq;4g#n;9gR*r3F1t^q|xdPf00I;wj$~-iYX#(7mP~R!0H|Hk_E$u`-NjPZ% z=-L=CH|jpLorJ{oRAFfQ(7%Ljt)EkQ92htq8~RMbxx=S%Wb!Ju!-M0>m-A4F$|s?2 z`}jwrXF?+U?7U&+eG!HWDzdGWsk>^drxyDrA)}J$lk!7XS6&kzUTgYruHagMzPN~O zoxrqSY+DC@7m%H>yUjHN)x0fChXmc0?S(r#>P$)F{yM1 z%&RvT@7#D7U)_C(rGYi6XJP+wVH>D3`uHR*oPHg_`8hy=Jtvpxh$9>J;mW0}xOnvj zhV+_@lw~`ydF&F@H4{;mx@@2aW1&|9F2)DpZV?YGclJg#+FL>(uQq~}&#$)lU?ra= z>$Om1c>3U0j4QHB`QlPiQ!H>#VxL9#UTTgPfL~v`Vp#2wfNf5~AR44VcXb^SkaPO7 zS~Ff7+!voLorV0bKEactnYcY{7S;w8MMeal7m;qb5a^3zt{zwwTm)YZTZ0ub^_4#j zq%RAbrOe%(T}$BL!em^`$ikH?mvCtKbdHN~9N>B)nf*T%&=8l4_M{JmC zKoL;jOg#kaEyb~v&yJ(6<*~`32+NMfo(|KoYSDHa6%f_Un@GLDvd`pV$&%fuSGEgE z2R6gP8C!88^MYcFld!k~&a;8+3c}zPfa=l|;7&kR0zmsa*zO--JR3kyLaP2f?eBTy za{+svoc}ppiLmBT3P5=U-~Uyb0QhWTOBaCLKLht9T|i+rz}^`f;Ep0JWQvK5*X1nN z1b|m?p9=r_Ht*l>kr28CvLWR(*6%)LJHP!d;b3jo|M6MQYj&T+>fNWYYL|qAJ z0p~L=A}{Nb0?rA@?()Svb!≧kp2swPzkBr(MMCOc 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]k~dH2d~Eq3i=0!u|syd-9uRY$ZdMw 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�$k#naX4`qtIy3j^=; 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%0D$s_GF$l^Kgg86maP&V0rx152)nJ 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%0DJ!+{{*@d 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

NIBXA`h%ySs05(wjmUWg|u!@sJNkXfUVe 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

53NSvq?0|a^kg$c0 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

Lye1UzLP`+Tyf8TQ|DC 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

$nK#5k_5 z7`E-K+hfCQ_pj+N^YhHP6J|ti_+|2P5SG^=;uT*#y>=t2h43%U5-ib8#)POe7Buk! zIMGJkei-c=8wLN!gM?$ZdN~l1l|pXrzDp;}oxw?WhgH$dsM1#W|ZajcLzr zUj><}uq0=$OE%%Eo(Y-N&(?Swn#i(=%CZWq=h`8kwm+taUnSL=9P1nCSE-Mu^B+k> zGcUuY>yb)Sm+6Wyo@mMrv)4U42Ss3{{!G-YTUaQyxM=b8V19rObs9`{eA<(Mp$BgW3jb}T7C z&2dMnWc%E$GyIfnDnIkJ(cP=Bck(5!|fIG4GJ0_2kp_fSy_y-T=PS=il zsw1==cZB2L_r`sb#Z%!;b=8LLo!4k`ZwzAiwYF{A!$Pq4=f|ci$?umIB$$L}s0_CS zo1E(JuC_O1kI!}@0YAonFxl5cZxDCl+x+&>J4HMV#^rw+iqpimRRT~qy%_uYhAJsK zqqnBF*A!sM|VN|2-&B&{*;%RIKa{|!REQ9}og7leUl)ZGmIjSIz~<`t+@e>4d*vs&zRN{jw90x2gT}v@{qBiA;TWqVb#6rvD}Ba3fr>#+(HG$W0y7uS^xu(+PuNM4Wh zO;#GOp@8XyskJ+)>RhU%gvu0n?_52O$H1~)heK)1%5dS3v?TYEV?ge~upxFBU~Rat z2=-6q@mD>$CG1^sZ@7hb*rn5Tvx2c|y2k9?EjldR7s&OlFTW?Vfb;UTc7wm`+I*mi zAfmg1Lj{Vy+R~gHe32T9UHI0M(edA&a@H8W2VoO#>Z(SrB@ziV$)$IEv{ zHr5ZaBw~Z2ZL4iBKluPN#~M$2P%DK5)Mv?Nx{pyb0L`EJB_7)mX2t*-2{gVoW(|6mJR+|bt)GnFodgtQBluBMVx z3U=Mc==)(Y7o(-|rG5fCYgZx0l{hiTRI)KuI2#;f*$jse$~wF{aX#QoF|%Orm5P z4)J^^d&gqCs;0lF4oNpG;&pr){7vyLM1g8u9T=B1Tv8hjA&i|ja+=JU77(*zRR;V) zH-W5!f-d}lPUqkT-718*4zsmyA%2@Hy?PgE;PF$VvdmGB zW^^%WtuR{T%>{KkV|xp!RM|g*f;3aET;Un+ls5eqwZy%Cd{mbBl8^W!1aJGhO>Nhw zHT48zJtyDPNM9`qGXTY7UU=1ROlV$dN>bjDP~L%1rags^6|pa>ty1>sCdU$U-1fU< z_iTm~Y3!>)@}FfG*;_Cx)c#df&d^BeO>E>{U zC+Mu-pG0;Ecb5z8F!j4R5H%!IF?&jk4D@$bt-Kiw8xClOV{lA4%WJ4nOHjLK%FcD= zIeHYs0u`%?YjL@WSX)CLyqk|ajrA+n={!jSQv%PC^HIGY)8kxfZSkT>;~R##9&}tn zkmSxo%hWp*+7~Qm04!K$R=H z)(q{c&z*_rU9z;;Pqmc_LDl(`nRFhms>$%h zzEhiXPO1glbMN++%x!;?)*crh6~vxJS$~3sjC+P%E{&?Z&W1^e2x+Qi-@z;9b}AQO zUqz_9G~=_gU0@Glb={KGgLTu|?F#P4yFtl5pF8-7At(m{8kiOP)H4i9enl83>`Buxvu+MlR zgJ2&sv=4Nq!gJ3L9i8u{Igd<$^$)bwnmd)jkAXiGJo`THz{d`GE88Y~43#d2#7F7s zT1((=T={#*-CFXcouLPR+NK@Nx$y>QWs6ounUmZKt*-Hvx8$BXy3GClN7-3rEnEHY zB65CzlkJ!-f6k<#?AmTHShwh(b{3*a#~+udp7XZmpm^OTwDDOVkA(3m;ynK~I7A)V z85i43a$%B_=$q~t2=@6GO84O}n&+=u()0Zy9+xe>3XUef(@#3(dR?~y!}_hkugY|} zw$Hkg1KS%SSy)os?t1;{vW8^WyuxB|p`cQ>u zeG9z?p6fp})a@OHJuE+~Z~tM50qr(UfYFq(YCW;NU% zB-WYrnR7W{%rIDxQzV9Irdzl8v*lfh_jwkWT+rJL#nUF0$Knxl54P$>r)mfRT9t~i zwtj zpjC~`_-r@h^-__XV`r}L9OU^7FNaCBhczA|ZJq}-0zQrt zk|x2FpZnv^)9(rvG;OX)TpcVQW1U_ddj2mrKhXF<|IuU+jzFqG|7*QExOc%@(aeQ< z#FcGOjV;2BTl=(&jOLFdnp4r9wspn+VzERy-Q_+HD7Z7jqL8!Yc*doZQS~&3V@X#GMp5!(DXeyr^&=3GziSM`&J$4rS=)C7A zXzSV~3tj~|Q5jWeePe%+trJr=ka!}?5jlgJ{O0}huBSUU4Z6^7dnFA=HF%5PA&@&q zGxAwRosrMqZoBRFQxam_^+QqK;8b>&rm6l-{aCN1sO`1wcO_u2b>VB3thLc7?WKKz zth#I*PYa|^EL8M&3O2jFPW7{hIZoT1e(!R_TCL~c#U^L-ojFdYm6pgp$j)S$3elBQ zD$h{X;XGjd=#XZmHMQmYKC$YGcIwq1MA1=u!-nBvt$=Vx09Ss-wY60A*wVo=6ad($ zeIM0*Q-G67O}e%T&(EUaj|4m8a<_V`J`B7oRDvY&j;&)Wo;$75voRy`pH&AEL%4+< z0saH>?8lviX9%HK4MJU@Nu3^LKY z$3U5*b-F-%>c>npb+%|iJ`c!6*oHAhFpQ@D!gm5wi*Ayl;}H$;W}g70@5*yTge5_7 z5(*w@pb{kKu|t0imgj}+{%wFzBqcPK;fNN$9ha{hOu@Me+*&BMAl)>aNpgQW+I%1S zxul4)AkHQM7#^8ZpU+XMhoSaT^(jly9luP9vs7aU^@!Y`nTX54rA|?-L`0#JI`E_R zt<1@|_GGT7)l7iX^4jo@j;0Is4%?&*f1jFiUR!-7u0ujy_@Fko$*Y?qr}qIhjRnZ~ zV~lMUs&uA-5Ym+`QGAv#)Tfo<5nA?4g}e=1+g=E1BC0^BILy- zqo;y#l7Car{Ir``-d*$7!JYA{WeAfRmm_ot@K-YlH6g}#7=C1<9uYLsuW!_30k@M=(h|k- zM8X|cynd)Ysc{aKD1?ca#$@;UFC1sfOcEYWgFz@o(sHg{ASCgT`7NITsB&}74uI;x zs0(bi9wqVesUIO;5*>g2{mlox74m9q<5|4CYRhx6$Y>2{pQK552Pkkiqy6lxLD-!Q z364lx!Sqa}xvqhNj)<@^I-IiU^rdo}DelOF^#ZbhJ(1?A-tMM^DI3$9%BRs>6$@M$ zOGB%q2EdwNNsJUjMb3>4h07*dPeQTa|}CB_Y5nmUd~42eWD_O7p@1~ zRovNH;iyQ8pL->qmNZnL_96mj8E;tB_R7tHsfV5yy8lp6nNIc&Mv+CeVJ0sQ$@b0) z%mg$Je(<&dL1{DVQau#v#pFE^_n0WUM*1jw%f;kT9Vn$sehyf~>P($PyO{iRZ> zY+jq9c93SOmy_Z$K3wj@crwX){$P;Z1cNUBjI5s@irUlL%yFOh zbLA~gP+m}pM09VaPTMwnsEb7(t!iIxPg@TfIU^1$u+B-!VO^NK`L>;-q!lwQ#(Fkw zmJCEQjRVX6ktB8Sg)1a*F>2X-4n`L4Mt2JWhRHJg|y)@-ce_o~Z(l6N%bHS^fY z^4kBMUdyJAL4JDXfOqg(ebp1a=(g5&j06m-ga%da8-2}TXl-btB`bZ2O2p{ z%%|(wHZ?bQ0@YaMvm|{YJff_LZe5z|XaC73FGHhY(mL@oCC=@YVgkT1NMXzVQzM9z zTZ6!5Pz6!vj5m}R(o1+2)IZpaz@d};6SuZX=&)VA~Qd0>9AE{vgX znE#h;XCxyVqc>C4cj8VGi6Qn)$gl8vW4bRR0zdf_ z#VVV!^G-AT^`>- zOUDw!hU=qe?>d9lrq&5K9Mn@=k*Y%!CU8VV7Z?w5_iLld$UD&QMs4n)gk#TEe>H$c zUn2Ptel{hyT?Hrp9&5wDK=JH?hoPn)f6c2tX5?B`)%i2L<1)X5RONX9L0=SgFbQv9 ziAAYtr5_(po20F%*Vbg=>m~n?)a*_F>1ClPpXH3Pv-h35ia|XVUl|A&9epi)^4Mnh z->6CNl>ouC%I|Fc_O3}sk2&Rll8KY|r$paVVk@&OgYHofW+B_Cl%ybG%)WC=AtkGJ zW!=hE+8RRKyO|3rkIRgHtQE?zPyK?BaTN~tV=)h@&~ZZO==FRRFQ>rgv#cGE8&#*g zCboUC!e60yG7D*2>Ws`RsjXJsOJfQs$)S`BVQ1E?&~r)wi&)^)%zMEtvOkRfq~_f3 zZl7KfZb(fSHB@6$mN3{V85xV*1baMj+(qE$mJt6$@P>$&|Gh{MFHd^aN)=igkw3Bc zLymlRI;$6McJCMKvo9~Ps^_8n-gn>E(rB)>fQKL>LtU5wxq>&+A2W~oLnkDH6l7)U zLk8a6zvyUNYyZ#Jg~n{}$1|-ltslgrVl`I3Vew(=52xDj?@XrMnVRRMJKN`C2g{vNCa52@o~@o(Q7{0jkDKmmr?IWjezFUh+HkW-5E$&jNtl7;{L!US)am`C#1mnDP{jBn zVFlc*0fWM8#vl@0z_%b0(9XBlKhUC>Qqk)1I zX#?Sf=lXR{WM!#iRyT=o4rBh*KE>^7s|7u%u>t$x!%*Jnd75Z2FJFW-)WKs=%QE!mXwAC8P` znkwy!y`~(wOTqk-DGSUmpH!+-RbItE&!y{P=etq|#ID__zI-F{se^PYe4#>MI6k`%eyaE^Gtg^j+N0 z8Ux{VDUuQ|#K3^4w(2nE`Ku&UHMDhOWgIU6SH%CqHd&l{{w^7i+T2JhT>sR1C|(~Y zZjqNKzPPmBZcMKbfFS9$#R%@(8YoY|F3Mg(Mm0UV^8C|O{cmU*))i*qia9JYMwi}S zI?m6ylE6}`wkIkNofaFzDh!+ITzhb?%Jq9PO6pLBM%!#=u6KfhPN-7l(186$r-XWC zi#IMSm8AEA3bgxz&fD{-{1_)>4xxM9sR10psg;8c?rS5rH~Nz{u_xKO zj{E>|s)vg`;#?=nY*rCCqCzg;+^N!To)O%jf-lRL78ShRa6?Q$QdLQPy9uCo)Uv8J z%UL1^E1Y1ltrZYB?UGukTDf1mZHJp|3_7X;cc~~iM71kl9l0On2+Nfvfd%B|c)Zc4#(kA4rI68Zz7Lhh?;yyt$Y3;lRH#0B4%Tu0M4(R^^?ux zA?=s-ZW`=c;B#;ttBV$MYE|DG_%TcUuFUe5%x<>u^W=7Awma$E65aQO;(^8g_T<{o zgo#elQsI^DyCx23mYjmsr-jtY?AS@0wZi3{pX6djpy{&iZ`DLT`Qb2~t$n0}c*1F% zhV9hYOT#`8D^DpM@RP-%6 zThWX~UCa$fQX0&8N$T+s2eFC>@^ntq3LjX~G2W1nsXGk!hU8%TB)5JSuu1gAwP|Ap9VmNZhxr%kd7FBH}p$g8aM1Aiz9k}=!}t>;f)Ajm)&s#o$K{N zvB#?~A0tayYS8DE8#}>tGBoiV_K5m5hV-U?0KS9J8@fOBN1gF7(d>fjOP=(1)47Iz zVOJ}3UMJpD3tw&zSeVZjSrYmRvQ(&W0i;s6+8e_2M&n;s=x7uit3|uIQ=|!PnE36< z>=KQS5@g-8j7HYhbtkrT%yEg%3<67B{#}}us;+<1dFIqk3p%t=XZB3`>h2mGUT3!c}Cd4G>3sz(gRfMtd>G6(psINrEd$L%yK$i>nD)RtcE+M z4LX8UREaJyW&2#VUvhk~QTw#Wc$sh5KUgmZJO`YwY98Sh zb`{S(3DpzrJu!Z*OhUj6QYsK!RDl03!E2pCQ@Ang=mwwgTELHQdCP$%`bOr%q<}t+XkYZ; zRu)d3qCq*(mAmmjDRR^oZR=oBk~4Gj>oX_Xxyb4K3^#|5|D#hdU3>m}YOTuJ)U+3T z!|4H1C}LMKA7@Px47AIt_#je?EYfHP^6!ger#!$We78RN$7Xy!c0b=0ki~cmCo+{& z%{}XXn>5j%dlh2>)|wb2*5S6#k6|Zn)xt7fj7?c%L(?4_-H=-SGfC4S(3w#+G+@st zG=QxF{V~;E*maGl?pf!%UA(0`b1EEaZrx0*lMJFnp8_Mpnv|&`tU04n4-Yyl+(w!M zkM=UI+S8jGG>7!+^l(g!bMOcl*H8@RjPoA@9Q{k}Iuj`km-RHd*-Lly7=|uprPuR;Cvv4RF z!KnN^5Ho8BWU!SPEtfW9ozxE-4m}NpHz!>tWo{DE+Z%6*lCm{xpaFxbmx`ZLcyTIZ zS?9`EISekK@^veGR>3w7vwb=bWK-5BAN+|7W$SJkSd&U$bl%C*XI4p>gMq0py)=X~ z@%egR5d4l_n8WaunG&Y-Ul%|;^Gfw8t0mYr(W79@AVRNmHpK@)3{aumfK^25w(LnG7G8FiH`HvT z_RDF!VlU<=*3?>$`&IEHu^L~e7S9Se8yX{HpiymO`>UWTl9)&6hIiIl4aQ@|wP;dy zeN#~J(=-NaOTi?HN@h=^NKf1YUGXK{s?R>V^#eQ3^)JmjU=rJG%*88DzV{*4z_|VK zhwRsWmpfAR3PX20FFM_&Yz$C`50(`#VM!>zyQ#vLu$cu3(5xENW4g4v{W=j=`A|HS zV=vTi3&wdq}c}G^=>_M4Q6g5ziq~4s$hgTKdw`P1=+{R7;{UY+)^Ft864Yssp zVu;opOJvuLWa62FpRS*u?6vCikiD0W@1NR;1ICeNq-=M^d0nt^m0HVF#s|d;+#J{1 zPS=11>PIhuUy}nbt+INN)ThE!OwV6qh&!uMU0Z|p`YHKrJr9umr=@rHy;d!J@uUf1 zdSvlm8^Cy{e%B5qrv3Ny(x*q8)Fy%cW2N8U7N>Gx6MX13b6s6|(b+oQG>+$`X$E~= zH0@au+CEXevf3?{3Qu(x((Mon+<}sbt}X{F=;DD9CV z75TvP+h^}g#V3#<{x=^@-`?xb=>Q5(eh7E=P#^1NHM^6X}W zu*eqpD?}vib9tpX@4|^y;raj}1LfU^9drL?tC;v(SG^%&#(;uOVkoahWyyLUW67~w z(VLSU5#hQhdH2LgsUCM?ltb@!QF;`oO>VEa$OoULm~I349M@ip?*-$64~4ORl zAEe^_qFfLHu~s3M6W1icXSH+%cyjAZAt~G`ESOVH{U=9b#wZwo-(y}TCGQK#ju29^ zxsOmPR-W2;Tw&FQvtYF4_yJu)x8o5qm+bl8-_zvkdI5bE9ApZm^tFx{G)dUp*aOsiN*C6w zf3~&t5cHxLL~CdZvsyL-&(DPo=wp))+L5;=InvBzUAh#4ORlS2JBIOj%a zBemtY^QWDnJ9fvDw=YH=meeUnJS=~>=tK>A+$R3qv=aVX_sgqC z#`R6(KsY?bRcNlK;%8uUZRBVftj24|^j;QNVOv|t}n-CZ|Lj+s`@K!Cix#pnr5&Ic`Dj= za`Rk)RyFv_;|p}Oi4kAj>A^$eTYF$zO$H2?oq~_E8QYubB1z>`TmGGwJ5q*A+2tI zLcc^vK@W`S<|^^~%U9n*h+){EEPfP;oTf$tg4{c5F?|FQ|ali8%xv={sM z@Xael@zA=9gJ4(NRXjY30N0VJy_UDt$wE<^0C%6aq6kM zv>X;H&SR)Nj&ptBnN9ZQ@y#6MZ^?8B?v<0?cq8VUu1bcrkGiVL700;M z)7cLr6paeIU^CZO??7E0&+i)GJpp)gb)OeM_4u#SxBpwGjiI{#9XmAY_Q#vSxZr~^ zg>M4YO_oR>K@P*Qm5NMMkQos*NpF*7>cQlpsOzH3&}w5J1`v?h+vGI6wz6=z$Y0%L zQmNT!zOORp0s+aJHrcZW#L;4)m#EI<1-HY&XFx)lK0I)Qm_a*LNJmhwIouXV_3W(U zfb)0_=Ta%`xqCYW$;##MEzSi9iJ{Ji&rm`hGHaAAD&`?Umh-+?Fs~k0vo90v(s*8b-`TlGw z_4R{a3;S=gYKE&?A>t#mK-Cax-SKL(s}BS#P;u|H=mD#W6b@^P2Qnp~F;v2yS6%Ja zKns3EAg7Rxp`aSCoU=3?4uquKzm zA>y$QAy#3(i3t$WC%L()QuOakTNsr-)2%k&A5n%SogJA91=A2}aSjh^0qm*hKWswS zF8Od%d57jLDQ0xJKT1cZ72!%rK$GIA&ri3BR9Ol?P}cw0S7wXITV5`@I>}AU+PQ4v{}0Kp$y@Wcmz%aX5gcci zaZfy&nmGB(0oh^S#_urscj z6SV)HT;TfF*7{{;l^=2G?865-RZ_J#L?Bj5S;5|Y{tCe%)6qvO>wjpMA%{%Le{6Xq zGhyX0n9iCa&@*d9D;HX*{g9NYipJ9V-XQ*AVv17c`KOX>oMnhGMe>N5g+~}cx>C5b z@184ygO`ZZs^b;|M+PN^{o*zCev^3-4}J$-kYaxayBL0-H;giZB-7d_#@@>LM3@5cVw?_%&ajIeM5ET6L~uA}FNC ze&`bK?{k;QfybZzX84zJy!>hsP5_@CN1PeY=LP5<`$LpHkJ_!^`+Uf5r{Pqr3~-pS zYNnMnBFy9!{v1htv&QtA3440eGeQZi>c1L88!E3L%li0@MP6>4anEneB1~35E@p00 zh$@bayz6wVa$Z07=Bc3t5;Ascm7;o4etw2AsEq;e3|0L|#_^ zSVmu5gg&51OSqwfnHHjtujn|Tzu=HMvEd{DsiCxvg^2pib!~yQF%Ua8p*d!zc64y^ zjwYV|X4Es@emjrV!N0YNrg*}f{e#|yjv}w144zHDyJx#`$}qGw0h!<1%-Wk&Nr~Q0 zz<@)H4`mY=JI7b%bY%^VP}=Vb4oq27=Bpl$$<%jadwms*y_nJieQOts0srn%?=r-cSMyZ570v)YvRy3_TX- zlr2iVdYi@(-|kV_Ao;qKs{Vf2Ec*aOOKaWEKD1Kh#0>}gG>)b9!E0zm=JJ9gP{!jc~>3-60jKl9FleTFY!{osba@f4m z+d97+!PXjmp6@tLt7X;0)|=?*k1Rfa6rs+*C=DvQUD;TFwK7DJYQ}QX=Dl4OeXT(N zn9>7r6fZVr@0+7BxX+P?k=)~9N`2btV?E@%&8_e~w{HIyS6&Is8xwiqm$ze6YbJ{( zp2dc~+}M0tg=!fVR2-cDvIF34=*QF@gHYBpqiDc&(~?*p8mz7bCF;`xb$JvHfyZ8k zKcZ6gk4CZ1>RR3KRriuy<@k1OpHpi7AErC8&ppfk9g1J?llDgGtA+XNjQpnm2qoAp zIiILDkqe$_qj@M8qVCDdcZ`TFxX==At^wI8ljoz6M8p?eFRUsN(#_TewPT-x?bt{ zdX0eQEv-AmkIQ(T?k-!;{oIp*{0C?d%Xsw|oTYL+v`Iq;8mEr56)|2v{}nl(%p9N2 z^TCr<+pE&{!q#<yZ)Od}$T>U@WY3w(0(407l5%SJjx(0iZFGNcQs z3Pd(x;5{yt_3zfQTOYpeB`q3|FToDPtgc;0+MyxV3Yfdq70JPcRDZtFaz}`}Vp$o$ zw>`(C%zb6ra@L(k8%o3*j=XL-!(2SQi>W!WNk{)Ia86L!{xcBtmU}cxihVd|yQnjK zSeEitx(%b*H{xu09j^+zqM5bZ^mWSj*QW)7VY@keLVfrw+9QMYe1Vj7EX2CoBTRo6 zzYscS$Y1M4veG;1_Fh1^L3|!s+Z#(an2QO7w@5L$s{Pw#K|6i8P~FcTOMe!iLbh={ z?NXYD2((a1r|b*~esqdb8Ok~SRwr{MMj*`Y59LpJj|X}_VofVm)@%8@o<>mwAwb4?0 zOriK)a&-R`!H0APpS_6%b9c=bQx3>BDBzSs;d-x({I{-3+LPY4`pwUJYgO#f=z>3k* zXx1i1DNCVDgzb-eT6y=&^Z^|@fc-{tMyU!Hn_?z=>t*WQeTKi6`}L4JvsPvAZF|Ee8Jem{R4TFPsiz#!4pt~;wI zCbBS8OtGhso=>0s5n3$-+o(#DQ1o!v!wb{Z(a71lbWyt(mj3uQ z!}XJGtu@Nf|C(Ms`X^N7j4S#Pn!MZU`L5k2A(+!dj&$&DR}DF|InEF%Hx-T8#7#Zl zx&>C!nT(F1AtH4F^hD$32@Z3oyK_E-u35ulv*+`5)*^R}K=akHLK;*})N&?St?$5x zu^glEzUfT3yA@MarBl3bZ1for99`9&x&`MrPBo=FLoZ8w3yT|$ONee07tbU@rpTpB z-uT%v5XEw=b+7LR`sbZ-om|%3gM#SMtM8cq_L)~6WsbKn@$n}$S~cN9=)z%Jce_!o4sj7i=j9#5oPBwU?|uXOPOV!vh-^H2cm%+gChlB0 z&%vye4G;_)nzrTE9%G5k`Azf6*VU9^Q@v6JBM%0XRhrbK@mLm3SgySYSIy`y*!4{3 zwwADD9w~aNro^WZQT%OxLBpRe(PKMRd&ih@P4T&EvTm2xFGXiwv&-cC=q)DHVc*43 z(W2h^z={x}QW|aC#5^+UpiSCeq6^#EH`ORJEzq&&$?zZuwb%tQ zvtd!N&Zl+D(Qn+^@aotGJ<>OVf#dNZ$K3rljL3$?W+T_1!~dSq8Ad3tc`O;xBwQ~Q zg?I1%lJQd$&wt!ZS2^RXR$5W@mHjaSKM6h%pm92l{+%9aDdHO_NnVw;WpO@tkaE2? zyo__=clzcC5wNs57`$Wxis0OzbN55DnRp+wA8+tnysI^0)BXw5jT;Ww#1cdZt?}@Y zmDzBub@gpJEjLHfFNaT82YPPD<#dIy!>mR5aO@(J8Lk8pNCGY=InmeR6U>$9i7TnLl>4Lv}{@WZEb}iChW!CxBS; zxYq^fjoh&_l|X})9TyMft68Mx7m944*lgf)k;xDe(AdOsKApaG?rn#zW$b{){AB=$za7Xc3WV%LZB-c0+Qe;qQHdZ@-lR7Av(;T+ zOPFX#xFPp$YIxq$4@_)$n>0QU7DXJScH}_nb)6XjIUvqn5Vt8z3r%|Yqk#0rLIFjQ zNT$1T9&%n?KpXZ7-d;?;r7@$pdqJOJZEsd3eee&j|4qD9N1S< zTIdKy*9NQb%7^d{3T1hOWGXF89J!)zoBcs5_k}ATMO4{#@K}{T1UVhKs`J(6C7)&V z3bO7wCh8&pU7QfuR-fAh9~6R^w31|L($k%=QZrI)6?|0QQ%mWgw@d-69ci;m*Vt_x z%apx`^kC!L*_@R`;pQ`l*s)r}WCiBww#@WNSf(FnV&Vl6g9}XL?7&qe@|N`K<*>C9 z6_d+aJ(551ccT`murSmV46G7%V?xH+2GXN{fT#BjZU0C1`9Zm#$%mIW@4q2}N)mTB z-nzUylt{(f8{w%Vn^bZ)ZszQ7>q_5Xa)uS4-0Z$hJZ8h%w0r%f4ITZkol8y^-8zb7 z#4l4e2!i*ENPAW<#C!bDVQ#QjSR{aEnfP zyIGip^^YSM>>vXwq)RjD&(xfg101WbcJGw(7RfPdMrULlT21oR$;17a`>a%x<($+% zUAZ*$63UWs+h-`v>0gCpra{X&EY8{@Azv=D+SDooB82_42i7#5!(6kK=eB$YA7DvD z1cy{DUvmJCE>k>3LmNi5s|*zWN71tU#c%8;B$8nVmXIh7n@@rfCdWhRoQR}w0-cy zxte$~gu{f8?IwU*qhIKKrxYr;xcBPi7shl=bc<*-j7UU0ACVzll)FSeYuN`=tJmYz z2@9vJn}%CZ^MYU4A%{e^z#4)jxcVR1*XG`v;^~v`?)+XMq&rG{a91{8<<7RoepQ zNb~i#>LmeuA6@wuCGLkO7}qLKq4ir6!Jqz5 zpZ5FC2YW3oyY7o&pEtoY@~_epYa`|#Axs|47C(OCrsBe!T1WltQRgBP z)&Txng{z|PObxxiYgHLhjReRVGnepu$oKfVlb9*9C+?DZw1kGUUrTOfJ&Vg3y^5R% z=<>&Civ*?qxeTC;it$|Xc;c~M-ODPTE%QbYa+A)Ge-z5;DrT}8nUR$*%0-7*@n+WY zeSa5d=8VX^($NN`wM6=V+c4}D>=(%-_)##<%JzGg8Co>#ip&3u@Y(14St!cwH?|c3 z4AF_L@U$Jz&DZMEF4ZiBD?mWWv)&^~WSk56%1by?s3;`~%>MCuqi?0!{3&bgfzqRv zYT#~4W-*bH7KfTy_au3y`}4x^5;{TC3*EaP^4njSyG?;5CdWpAW>FJ3PYCW>@K@`Q z?}Ofl=iy7tcl|CIeeM{0Bk{(%#0Q|Hb$`%g*N!$8v%n$S)0F@S_wvU3wh>6$%b0NU zfeMK!lp9)Mxb`$;Ajyd=-X9{R)ymup zKQ*G3_GX6J$3%xP?wIO91eZSGP14RndvwB%!yP|v`TGtL`FFw-_rHC6w&QrS={9JP zoWae8+P+!_U575BwY&`u#}yus`%3-K$tzROigAH8uP<-w1KWwm)+Ci=g87B{0mdq` zk+};r1cW*5N=NH>95fE()`p3$c@i2ZRQHOPoHoB4 zrv#paMpQQBe-SVvs7RZlT_Hyh+^wZ|rF|Bc&)0{yj`bm1$d5$z8mxfE1`lLgwPT% z$A;W!wGNw}F-&;Whf{Z*O^up_iyo)_2~!?gysm}t-*nBG2HsjRc{`nKDtmO8FEd!Gvkj zl=`o<8PEH?bu@-m(Z;JP9r$G%N+yr3Dy2MSkkpg$gBi?E*GKM{Rns<$PG-AR6b{^v zd#_Ey8svuT#k_AHuMJf$sVC3%|Ln$0@HATsUTz9(Lkh|rF6@)qSIbw6&RyZo1X~LC zKKM)18$n|oo<2Xte1(5>WOVqs=q}~ub%iZ;)1P*FyNJp6dRDnE3<fM{<$ahocklFXo}SJ^POV=<_C4P^eL?GbO}u3D2v_WP{dWA$(Y{?_h_oi#ZFRjoyvRWyhW-9Z#+z(U`Rpf^rGzY^RhFRW(*sw}OP!cA z?a@5JF&-ZyMsQ5U-u$L|rf_Qt7wVYX6l=N!V?*{$gQ1@IHaUwQ}xxFPd7g09qq&^_l{RjLj)J+S#+lQ zA6067qwVHg*iw!8xt+c45|hywpE;9}tIF(Q6G9~1 z5=Rc;W;dPG^F}3*`!CXr-;^ZbfXU)t1Kb@cD<<4IDiLcC$tUWW;$hfycVe-O%>+CF zW9UyqlSTSdr5s6);l&%na}8tSt9NN-B3%a?)G9?IECg=ZCH~gy8nl;?EIDwmE549x zmwq(T@}3YfmUz&V4ow6)6YMyx#9gb=wh>OOR>@?zt$$wu#Xe!M?>JelrR=r5hHxdC ziQC?ko`hQ<0NZ4*q*`&~@zB%6X)Eni$PO*LvdrfBnv|Rz+|%0#!`4X1K4Gr;z||cn zEj-RZW?z3RWwSP3^=Fs=Tsm5$q>~D3m(0r#=0%H`o|v+gqa=>l-Q?bbc=J}iU$9=} z@K&7MaOsqFL=~e+nV&-bH3DXbX!BLbyeUqGZ!JYb@qiPlu}G{1aRdEDfw=0cjk>rUjtc3bX znb1`nYg?C^Z5GRykh)0`@46qU(b}dyovot^M?r`C5mkMW*lw^-!reJuZNr>*r&Riv zGSO4^1IS|;xiLgHnMkzm-JZF(zcwGO;M8bQlFh$JvhV}8R+^f#rIo_M4* z>FXM7x1#H6mI#?p_cfPTI9&t|uWP2+6;DP&4S)5C{)OCjaZ7mYH@!rN893>lkJ!WfG ziqZtQec}$1lim?;k~7+ikv@6FrbM?d0zKPWUeuQv+5+Xf+rfG-rKLqLKKZG=jW&uF zqv=fw#y_d*5GG7{tZbgNG^eM`JfM+RJ%5lVAh$BK zNjBbXDlpy}_RQsmc8i=#3!y}x_fC$(U()GROy#XZwI_ma=oUs&;V0g%3QdKgNF-3& z{wCI{)$?pkh>XpXBwo4Kbf*rUBf&eS|M8i)|GQ>p-JI2X>S7}gztxszH(?)dcu-za zeP&LIK>XF~CO332Yj(7#TE+rjj`i5EABwg0JrUX5m)SGb48r=@KPD3Q8J==qXpG^S zVfMX2#n3%0QRz$2Zrx$|V2zf({xi$c$jvJJr+VG>Bj!U}lt4{@Q(<(_UKYxv`-72! zV8T=aDhVnZUea)`qDoY{jJyV?M@>ueNbWjL(Wk@=orGj(6Lt=J4!&1omge#bFZvWh zvwimm^t6I(UR1t+4$5@y4DrEHqTlgN`xAF)KHkFR@^50}2;J=_tv-$hO3n|595WQ_ z=}2wg;t`UEgJzn#6!U7TxHc8>ghN@_gykJG#a(aZf80^tPsH+$)UG@OMlSkMeuMI> z`yW#W#d{NXuX}7I$^Ama{(TNF&~Jcc^GCo(^N-ncvC4#BZUm<9Bi zw1Lu;9*mJ@bxV3XnffiPJz6#z<@9h9!FhtLaJ$y~0<1|@Z!IFd-dkgT011U@{I} z-zm7()?7a9cZ2G>UZ(I##TT@FYnn;8(G@0deW)zto4KX2#;WH-Yfr`Y;sv*sD$S=d z)D2SBmvt`GnUMLS4+S_!AM&P*)$me1Op)hXwa2E}wBq2PU*`F-+~?M^zC!2P3t-|= z`t8PL2M!QOS=;@>DPEL{o1ea9|0vpqraJ0<3*qxfxpg?v8+w?7d|kb8QqQ&l2aS73 zr6F@F!W}i9@avX;;5%;@8s@NEC>TmaF7N7cT*sz5I^q~3|J>H-7r{4_PlraeM@6te%< z?)=#NKQ(2<53tQ7@sMj4u6w;Cgf}1D;e*T?K(>>C}s21mk$%y9%3Y$Wfq^$F)Q03uin_Apn|l$dT^JVeb*n{=|ANe3+B-*Po-%XDv?clrNIPc}#@{AQ*{jCH*|U zK$}uTkRcUq`Z%68prDni!b>+@EF*REG5*|bq5Pv+!D(K%WTM;IcJ<>`1=8sb@qU=s zxcE?24yC{iI@peewvB>thqRhit8f?Xhd!@Ife(Sgw3-d1o_?1^8MumIj|qZ#`M5Oi z+W1*=3!)(eNn=1dlmkxq#3>TuqYf+8d^8HNiC6*Iq*?g5Aur~ab(*X~aF{#9OOpz_ zn)+@|)(}}1w;i`LftYDnx0OFKi#A=Pm%HgkY7(#d)+{2RlOU{#7pZs+T28*?+&PcOc4*gP-{(X zoYk#jso|Qu(+)f|^9`KYLLk+oEwfm$52JABzFy?caF?{IOVaq2Wz_eb9l$5Z9^rbY zPa=rZKYiS3F^ z;XB~?aY@`tywIm9uBzRF@ulonIjbBdMqU(f=#Irc!$4(HRD*4oRJCJ`yEH%F^U$GD z>$6@KN2u{r)NF6$I35UA=Vw(1c7%^4>`mGZ&9_DQ)t^GbC9UKUVM6D_Mr=LuJ7JeWc$g)egxcLlA+GfUy)Lah%x zwJEsRqqSqdoMxy$Jq%CoFD`Nt(P~D*&1RQb{?>bVH@#%;FV|{=c2LW{Rep+tf)C z>E&|CvS|?%CUNZdcJh$L9q2*07g|P9mk`n*_jpX4Q7)|lEG#l<&tJ@6Zi(R&BeMHp;R=)RxZ)**kL=?(lVnZ&nQ1*=c>f%OoCrsAe7{kkR7% z1T7{>PQHhEK`aztZGM{j+YEUBD`$ARLrC6@_I{a!% zU%4&!)!UvMgYAY+3kQLb=I28XWkdf>+|ej&N9LWg1J337Vq^Tmx3n!NnY`r&TuySLIa;WVTz^NI4s31fIT^&`4+M3z&>09>#++)$k! z;m|E!-B9_^F&z!qp!~kM!+WnL@3l%y;k}42C9O(lkxT94hrTp~7Fh60c`Zdby{3R^)LUT0|e$;K(nuuJB_BGvQL?n+6dB`>_53iim@IV>_O1*66c2lw{}HC|#Rt=srAw4LO!@ zTK?}x4n$}V65^?(Uw1z_KWp(!W`7gfi+97^&A$CL zR@)tTV0IIMsbvMFZgeYFvx_ZDF~fTJ&fKEWb};7=yF1*_I0VCAkA%w?(;K8iNhTC} z7COEegW>8EtlP5R1%PWAt}!Tw9-DT)V!I>ggz=@WklKpKnDPC~=joOcZP9s9Fcyw| z#AS!?4b*3RGZIL%TfSq&De z@PMpJKufYVQ1`)XzM!5tKjPL%6$g6zvqPVm2Le!zUtyk5dIYgo+0{1K8-$HJ6JVBK zRLw72pziBL0cEAzB>i4CTAbMH{O->@G1<@ORGJ^@ro}bXYWFekXw;;_z(UiJcayU^ zuJY2JY?e<+f}uC_PT%p{ht)*{(WogX!aYMFCSOfMPS=ja;qUJ*T%N|ANZS8k;}FuX zZ?Lsc&)=KmJCpGty_oKWM6CxkSndhbB9I^Jk`Y}eCd;2b&5lk;-){ydB2(9Toc+q& zB8nDFZ-B?7@n_xNrsZGB0?La zs_l~yf{@iET`L8LtR`63Ch)U>6Eo>uq~Lv~DB~EoX*FkYe@mrbEG|O~HivC-tmnhn z&@$)MKZ)?^U&uRc83kO&Ld=UpSpU@HYiQUYzxSE54o*ND)FD2P72j=`hA`co&xUkK z@Xclmn+$#a*YN|ew)i^O#VzcM%TebhN-SqO-;^*t*#A{mmNz#?Qj|J6P$v=Glq4t$ zA1&FfC!w6Y%A6;SrzRiuw~FfM)GmTel7NB6G?EfKbA}a+Se(o?6u9d((>Jd{W6i6I z4>;j3x8iKzkPyVg^o-wUO@i$hV$mg(lWO2-!cZnGUs)NgbMhE7T06^>`~g6{KbZN< zU2>3UFgG54f2~2IX#5tYiqcryXUHu@{;Q^;XI&4DWqcjA{H#&S%wFQwAy~Ff1Il}W z1E)mvRwZN?&wJ0mXHLZSw@9)Eo|Qe_y76LN-9T<1oHYs>9+j?fX#}OkiB$&y`!9~# zK^|)UhK5|nG9Sq!OIwB$W9}hJs~G%E(?$*rCrk%t>n^R2fT3kZ=JuX_miA-w?W%7{ zl~kv&o~c1VZ0MCFdlICS?}Vv_Lv^D_@T()g3@PPni+O7`r=`FcPz3bN3b~hP8jqx+ z55P5+JeSJxhUK4HqRLEg4>vX#4pn(Cw8+~9#1MO6z6A60;+gD@3 zP}Q>`MMeAh+-LLEoijOhStH7{(k#L%i+Z$$Uvj9W1IagN?r|de+s}7Of&%f^2?bLlT+kSuOn7yT$v3<$Y&Sc zf1#zOue%eto?|s4QTy8vBRAo`wo@?&lX!aqT`nA>=_{$ zyL9O^C6$;m=FlP<+riRIo`-|R*=)Wo8sf${rTnji8QyB3 z{T{Z!=UCP`IdZ*)MW=*m{%Q>G<JlIEbXGu=vz3dHc~5h)oc{&FTL&l-f0EKrVHF`BwD z!_lwW&Quo$^HmY3<+&5I${qb&hOTtw&qv<41-}sN`6(ODHzfUJ&%x$Xrv=)~f0V2n zEWVH8K*xDl!OUMrf6YR=m>lpfvvKF_kPrjfew#$~x-i`(62m=eFZU6%OHB+`?6}Sp z0&$BOR)UEE=*9((JRQx!MsGu8<9fBaP@Z!g9-p;9{U}EYdM#Nur+FRzzahzIkJtyD zQ?Ol=!4Ne}r|g=onw-slus&eXkNqTYpqF0g`%W;@ap}-8%0X!WY57^H8)A(Dl#6$& zVvmy=die!wPjT2^HvLnJKBv&>OdC49;aJiz2_GuFKV{B76UqcZUNFmJ9GuX8#)8lfjGK(>2QD9XuXzSLjXYZ5 zYc{u6gi;$AzVr{Xvdt5IS#<)2wzxE@gBc&fc2z z6%i+B9XwZH@K!3&Pg)Peke{<2T;i1%;y1r3q8;%X;XF^QNN#;wk-CrbH6#7M$Mw5V zopGn#Skt@MeKW$1zwNt%7RZ>(7-j5rVjU&%etF;CB2~dTzg|_$n8?CY$))sRY`L=X zZxzA|-ngk|OP@eTE@i?-XRfm&-6T?wcVdeEDpEM8%HBmiD9KqwI>s%wTwYU+X%7B^ z*H*Nt3`t>f=#PFAG7_#Ws1A<6R5=$Jov{Ao^hIf0;HEKosbGZUv)tb@It0~A~&G*?fY;y4E_*A*|0;+*V3w@^(fY@xQ zN~I*;2$M9!We7KbdWr1QAyNN^jh|zP93F<07gvy5_Q`&W5WT=p!-bY-z9fhBx8M|)oDO&EQioN$$t;CJT=kd0^# zMP{ig#?lBAC;`BPOjez};E-R!yTd>U$yLI_;;r5j9Jd-}HnE0y!WZImr$T*KAAcu_ zT>l3W(%xOVqQQ48VNO?~=qC(6zn6f9sY_T`>g`65_fgD_M0S*#kGM|@`eK8iIj|DWWpd+#B4aX-y2H90>+jz;j(X(uS{`?=xY~%hgvy;X1JvvvT}Z{x3J3aM0lMSPS5b<(Ugv@ahUPKeA@yDFwe>k+-697Ve+> z5yj6%91i57F2g=H)j5R{dPT|7py=U(D`kp{D>0)SV=KnzEX=i4)ZyQ(b6DrY(iwbR`^Y*q(FXdl`nH( z&ZZ@s5cZ5FlbSSSuEcW5>adg!m_I6U&nGY>`oMwuHEO3zdA#ojlS9$LuUc#QaC~#G zSz@p2XDW#7R-2%t3b;ZFWR|J~F^tT$x_GMVZ>O$(j-vj+JDNar%b4q5dzjgK1KH7d zr^)E#S+d{!X3Z!-Bq2#&W5^FZ?8IZHZZB^<82G>cHr8X*|H+Vj9eB8F=5cqTwrInZ zG93AorB{|qzi+STYfW`pQ*OZS)7gI_Cwz=Es~fQB0lx`zcjo{0h&5G3I#lFKc(vQB z?)>`JFSy=K01CtXdVRlO-?_VSOYixRc=qJxWMVs2jd@8kI=?^YJnC#M}DlJ{kM*4eijp z^NkwwYSZwCAoMAIFn)z9BfauNbIbeu8`xYO@8Vr^D3&M(bxlQt536M+PmFa)4VM+7W1fmpYO^$KD_tH_J@P`l~WNUKfQ;sh7Vid zX(+TbQ_j&JUAu}MQa1+!&OweOWDtlx^s%p}C*CFVd4Iv)i&KvyvU{aL^nmZ1rw4uf zrg{b0L+qwz!`8Dq+Hnr(Bj%oh&0t{rwbdvyayc~0+1S(5kF-lzwkKf@!}AvvmLbUy zaxC-S2&-8K`HNHVNlV}zaP85VnTU2Kqel1_{rCF|QBk`uF~mrH+BWZJGc=ikUt^Fh zzdJvfFgWCF233R5X8hvsT?|!Yulb;@FENkYe4_4gG_TniL;Q>#BDcW6>V|g!uE-8p z+CPOs?RHadCG0`dgX|UZ?Vl%Jn9`Eyv9I^1;|KEVlfR1V0yvR{H2&fj8xf`v0H=F# zSO_%~E5;j70#>9g_<@{m9X%rP(5^!`8yx&?5B2INxdi z*LMd)!O+yyPOTa%#)C=i=*CkIqX`XRyPLI$kg+DC-SLIgZWH7KuNR}m-3dHy03*D- z)^BZk-+D8uduLKgdD zhdh;je;#wA>h}glJialhlDfOJI&4(FsUKtRsx@|-@R__m;{PUV+V&dDaYGPkF8MwI zyywKc-)-myhA&)KP>coPA!?efAG0B(lOjF7TYmXu>~(gIP{=aM!o8Zb68iOP*Cf&z zz9>NZ{BeYw$Njkk>RxTIbE^#C?WqL!p!VbP>e`gYXE&TB6oT?wu-_K`ZoXc5X^$Ph zd~lGx#zVZiWB7`M{$h}F5Lp_e@Wa~-<=ENB#H1tOK0cntF@IB#30zC4m)C+j?BKE& z!ul~f*z}{r6uGV_93BO{>|w%o3~!UP_nDguRngPYA%%Va9xHmt{yUFH%(c#c#D?N* zJ$mdnz`4mrE|cN!?_&p~gEcE>4kDf@*caCwj;}G)d*dOh(yQI1 z!)>6RIp4e%zbA@(Dlb#*5gZ;HeZ-N5uxR^v=tDhOBWB;*4U~dQ_*GDj_IC6H+~{6z z=cn^MH)$eX5^$;iVSY(Y`zI$34m{l5{Og@3^6SpUVh3)ldisb2zxL_g0)j|di;^Dz z|2GFK$*rgaeIz5r3!fvSe2f!2`?FhP&zP?z-!i6~V>sIg+jGknfn8Dz7*=*+4r&(o z(FhJ-*)*m^PhQuc&atb{H$dv@?Z$botadd8j>MYmcif9JoAW5TzZCDzZ4?2jaL|Go zWP*0I?n}0xrP>?}i(xJ=J=+zPh!edJ3+HoQ%=a zv%M(nqX%NQncm#>IC{-PpOYFS^NHxeNk6d?3*PpNuim~A;gIEhkgn8L^VJCHz zbTiG$3eQcaHfF$|?l^enj*-vvU?vA9Ewxq@NuCx{*p09}j`s>hElt+nDJD^G$&2A7 z-}bzH5i!pjXvUODAX(T?qjQ;>MO{nrK)9aaD|PEE47${`{JKfJeJoU2n}&HuM7Sfp zlu@@rzj^R!*}SBewlI~u?bwAP!ePp`zE;%r0RcyD8_wUQ9Ro^KKeZ(?o@RzFPR;aL zkJ>b1-+H_}f_-DC*}(D81IP5nV1R_#SzW=iwcS}@DmGk(vhIX+wykQrJ?(l_m+rsF zk;fK|AG=SYs< zUZkr%P>>r%1On~(JXQV3Z8X1|Ue#Or!9~&0gqMGKS)_=CAeyn8N*F!cUvaaPXHChj zBUMDscP+8y;)o7I)Cf=*1;hwej&0AWVKM6L*<`I(J+%!surwsSD)gbD6a&`GWdO zZ0gf18Y1k`!8lY%P3rR|zO0OG%eEn7qXaQ`C{}JXil-%!L$FD|D#mH@ez&3pSqZpt zex!%1vh>JEV(Z}kW6;QVbx(+i4=X^h?XKdT zy*dK>HyS+!B>EmWb;R8Y{$V%pEK5W&%b9iPl!%Aj+JT` z-pQdmrmIRs_HRiqM%Lz^e&P`3Fkk&Klf-re9lVwNAiEGsVgzHWYTgnXZS2;g3ru+p!zbP-+pOW-&b5vQX}cW|2S;^m zLFn6`9VhT9{d6DAGr$z5_A5z{70QA=?h{H9WciU)>gaT)eQF`2%TIjYc{J{#BA*nKj^|x-oFlPIV%Vrvi2a5ljz$LW9(7Y=-V<#cw31-$^mQa z@Y300^2^j!7Sdn*^s@Yi)AYVf%^q*8Y*~m?wv5~>Ytns7LNdHrpLh4IGjA9AGeF9I z7SD6s^l+xbvaM&|ACLXlA`VJMGwNQ-g~$v1p7P{4lDakVQe%N-;ARF2J@QhsnSlcV zhiejC?$USa&Lu%Jj^c;O8k?jVA8Q`I1=8@7NSsDs1C7Mx+o&SR(WWEL^WhH1@E~)vSi@4R*k${m}7PqIN1jn;WJzSJX*=MpwcV5=!`+EXE(skFewqLtmZqZebl56)+#n;a@O zS0?iyZ>h=8=8ukm?h;@;T1Sf47fj6Ms)mIn7hr* zXduizPYv27{@J{vj0Ld^%4U@O*29d#Zc){@+5sJ5Ik*^OCwbNX*l%sBHI1fhW zPlnU~#ELMb+P*3rSw1_7srd?b_4@fe@18X~dn;=GrJ@6-!`BZ5Q!Y_lU!o6B-?*ZB z7Up`cc-z_pkFp!nx6O$TYc3LdSb2ot)J*D;aOIo1m1ALdH}i?nVA@J!2TM=m7cM~K zj}v`&xCiYL#E-AhZ-X*iTSwOK1~Xc4H+E=RTPmlkhlXC*Yw;T*bh>a6Y+iO-TiUZx z%@Ol*_YcH@y^N`BKvh9~VzkuYlT{XWj56`1Va%qROsFiwxbu>fWKZ|R)U4)otr_b* zX0i|N!WH@fQN2?>NwATjUl*NO%G9}CgQw1ql1)gcCn=catV9Pjh=OtT44XkRXl5HYfObGOcez_C=ds)sDAZ(MX#h()s{H;~R_jZ$kQuk`Y;f~~XE1EE>T{8RF@d|~siZH9nDRFzpGfp+VftfqmRwP6j-ngQ zMaK^*nD>_TIRfzewkCFn_os>#>S6D~Oq6q%u_~SV8 zXXc5ptUdV8pp)EaG^{N_v?CU#0B3 zSO-cvC3t(f-pBf#{Zq^{oeKVaB=O*rXcy7Sfxv!DB9&wp*<7v(ZHVvr5_8&Xdv$Ze zisV0#LdpzF#KtT24H!#Q>#(i&=(rUyYe%B_&1EiDl;&murSbNYEyJ^B2-O%)Mt|z@yzxGwQnj z1c&cG|Nb}l+tTed|9-si7u}A$(rvv(9!Mtk;+RdS`5W!U0(qzTL;>A7t1>v$AKHiL zK?^pu+XR79+;zvfn(i^nPOUA35FuQ`=yX|uKd)n)T z?c&XQm5}e2f4^f{yUD`5Cp>VTt$WW8{A#-K+zDs?2?UFgSJ7bJ|cNCEH?BpKy-0^7R{g~*Ak3dQ3afj?x<8qBOpuoA;(?M}(1x*Q7TW;{ymn)Q)>SYg1ub%}9whHC`csAl% zU!sxk9e?}RvIBaM;@%$K^E4|o>`4KM$&I);H+- z;(R?oLLmEn3)1$PtW8t8u5BaJz{T**F33Gsgkh6g&3b$;3bIc6$7$o4I{J> z(^n9M(c<)nGz@)O@8Vj@?9t&29r?%KE~B$8!f<{5X5%Gy!(jOH!1t>2W#XDoLPA2z zEynadP4=Q{;$)LqG5v$L&OE+UXukoUYHa2-uc*|ulsujOeg!1w!U$FW! z7vd2}T}G?OV)O>;E~^3BcSzZ=B>Sh_KUSYjrn}4<3{<{J@l$uqT8kMfJt23kk`W<) z7s90~!)Lg^r9GRCr`|=KAA>5^8gSdVdUS6ma>~^1Zjx&s&j)67wslJu@XMm)@}Gpp zs;SoHUuL7r=GD!d;;?%^`pee|#cUy}vw2#<2FuT

*|Z#5s)nzlmA$OOzOK8#OU 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%0D&Mx=#yO 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%0DTzl~vYd#^PdRNzLZm&}dhe(e1 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ⅇ!{!@_IHuunCM)MpWisp=*676IGEt0c(_r7f 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%0D)OE8x*@A7VU)c6U_%BV@4jYt#5J)4tvR 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 vrh0x2QSfoX>6Wj)|AVc*70IN02VWGH|nY(sJ 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

  • >7U4#VbIVZ-WF5a+(iH$|yxPZU^ zNhvX+h`Qs;29vy)Z5U<#=bfs#J+mCA$BA`+_}!~wUWeyG*e&Xru5WXx|0q! z@@fr}hLkn}b^3MMQo3MjQb!63JR01yD>9bVfn4Q*o2h7e7*-g9QkQOuB^J&unX0^! z4-G|~zqIs~Oih`PK~{B(^a=?2R5?4FL~neAelGP_eGRszteV?&F0-OHg+!9l08MimJvk`2&;mQe zfOa$D3aUKZdi0qSXn6YufmcBIhdiSvC_d=vd6}?LV76;qRCF9ZPClAD`W{ zrO2R2yfE5`lCK2{3HHw(uw}OKjYU8SlTXeHYX%iO4O!zwY8v=>iZ64&;ny1^-h187 zC2TL**#6-17^2%!=ialVST!Kq*sALt_o9UAh1|zztAn0~EzcY9TN}_FQ7>-7G#neY z-5RK}P&1HM?8Y~DHi1gKwl=VF^Hu}!BEZ}MkXQXVq=u(D(qN<*kx*cvo}3)S$4P2f zqGgG#@x=#JO}y`hmRweBRtC#M67VUp)mXGLZ&z~7?X}3y4887ILRF&?iPFBvegjuONjj z_qWskp7wXXw%>Gr%mVJiAC>PeGOR=H`y<|h&vrhgsQ&|dL9?K29+zX1=*F#+JxP=p zmykVa#H~Co7#^%D+PpjijGzlSZS`_ zn5NZvi;v~gK}GbsF;`b*1Y&tSZv|S8SW7@PPAS>s-#fftO%bP99}eNK1H-+D2X3VN zd|Jrb7y6+Uuv7uPzWQn*$I&0>Te=tPZJhLnBLIPeselwta{|K$Acn5)FJy`0$e*&4 z#rHmapLR(@pg!+711~U$U;=sk=NUe2;JrT8-=ridMV0WajgNgck_P1aTNzhwU@$07 zyO}hZbt;ZBZph$=h$n-$C8o`8RoTTjhJ56R-u+UTQaiXTLi#FWh4gH9O@e`)@(`X{ z#!BUAbDf~=;&1i4`xge5_MS?Gtm?lcJRaY~B4QvTihNrUJ zM1z@fVIe7@ni4N(@IB$4CVmZPNZ;lI#&$uqig_N7V3f((dsmw2p(r_3VzQn-<@U7? zjUcu+JXc6tLt!$XSpmA1R*?zG*Vr=jRMZg*op``ixTc2)1JrA-{5;-(gsEdLx*L8r zj3_n3?(Of5?zA3AYKOmzA^zEMdwE3Ihb>8B6)`PfKC*dJfFx==wAFM;behzE-u9dE zd5(OL9~PvefHv@vXi(-mk=P{4g>t^>O67ZNfN;8!B5mr#_w);lc9+d51LEBnjWS~acFPZKf%fZ!d0Z=k0?0MS_KSS%Wpj<@ZAJ|L4I-A4v#Q`oqqwL^&agtzx13oib`c;*2rM1>ejVN4P^xvP{f^;;QPSR9-qW2~z3I zlO?l_ffQr0v>{RxX_UjUhcZ}6bms4|^ZA%!Ywmfv4b2y!!tYCOGLIMbd-`&|6IXg? zlCo3xGbIukW42eQHu^|z?H(7(os1p8iP&YbnK`lK<#1*{;0(Mm-45wj`ADYdBEgdH zQVlRs#{C$TCO;GB@7Y+}CHjlk=SdS}XkGa6Z=3jgXEdw3wg1XIKxXx;A(|~uIByZ1? zH}DbcFUAQdg(7dba)kE=2w=@xtHd5F`~5*h{`#DUc;w27DxjxJc1W{#uD>gw>dVR^ z8`=$mF+O{lL$6VZl>}veq;o5V-EO}lqwQOl-I|P* z;YT$yAR9z;)(&*R&+*d;M)`AeqLf&OdJ%mY8Px)yDvRX`x?9AxJQI(LU|3`mwE#8d z++5I23;!V#yKwlz0SfE_xEcMG<|z210^wChhz?Q(eCPK^6Q|C@q{2f%g^^(tYQ5?A zMlA|xKMeg$LjBez3@e9mBu2*5Q{12}6eq&jjb>%>!#D7MxjSJAp-%SLjdITdgZ-=? zIu0U(w{2th!VjO0j=wdxP}YJ}$>xGN3ek6()>txaN2~-GFxAEJpbwY29QhLoIh*c^ zSnCEn=i}1oUO9BZ{6g2@CjGgAX#zk0M)HjKk$KCp{4mjZ@= zJ2b3gRi_J^fq$^QEA?!gWp8hwZ>(Z(nC7ujb+c0=5c_6`V!xY=>4O`+Mn4@5?MHbn zM!HXIH3bOH>p!#Xf$p!63dm zi29J-+n>@s=#_Fr!WHzBcJG*KZ6K<}NZ*TUAyK1}Ln!{+y^FR0VeRTfqj3 zHijA|6Nt4a8&is!Q}LBn2zAqRPo^Y`5Ve8HwWLMI zv_35|O3C8XJ$H~ZKtn%;Kkh9mZI)m9<`7}c323`1rcy>4<@?4+yy0laXf>Z-3fEkUF|7|3%rf1t-<#Gb9OALuY>V=^b)6@ z=65KhTIJQIi&8#iTBqt=vZBiwp^I?21vc$;exVwh#VKE8lX^FVUq!IwMTP-pmW70y z>KsZfP8vn~HrcsF4-!hy|&@VUv>Jm&ooU~kg4AvUP&!SZM>JHOI4zCbud^e?U zRoK57w_Tw&|7OZ^HT@D}r%3+4zGa7@r4xmIzLeZFviGaIp?i8h26KWn`ms&*T5FnL zOi-U4<>93PM;Ziekm#}mgF0|VytjWau*Ey5o8CHtZ9XGLsnAtztD2SR=YMBjDIumc zT8Jv}D2|RY@*%6IT9-fC1Z-Z@wSGGowOkbZZ$(d3s6OcejQT`&EE{&dA+FDuD`ZVS zO5wie&8bS(nG^mWeZo~S%LSX zT#OH)v>lfk!4V%=$I>zuTABaUFN0;H^yB(QXNa8d6cXxrLM=(bizkeabaxg%Dw7DZ zhS7qDv|?K{Z$;+D>_v%!v`w&^2l`WGp+#%^&;*QcwW0u}Z znAR^z-^yo}5o8H~EO3ZaWMqmG%h3WHwRwgecvzsyCQW5wb8|J7H6F3PQXIpO8m(6v zeU*JMYELy2kXx(&%6uns_^exeNIR>ewzDmeFLDwgai71rnEd^U&0Z_|1V;4}|1a~q?f5Vkp-{pAtj`Rs zL!nkD4U>1Er>d76`D?_GuP-xhLnmDNA*vv}Dwzu@H}aPh1c%IAqw*Uyp3O2>H?^XK z6iHY(7wemwUh&*(iP9;kWeLzxp)RG0vAQGZ4$mZ|+r5zEfN2EutX6?Ebrs6eFI*yl zyv&p>%r1GT1ylXcn_^S4WTsr+naVLI{Hgr1odQ}#_rc)qJ-J^j3jUux8f!(Vx1Wk< z@0myZruh7A;*BjnbZzF-_NPwLX_zRKs?Y(ZaWKr#rj6)8mr9Ou$bvSr76pl=i5W(+ zUzMU@MTJ$nOl4j#Kg$2R!7FIV+eTBv|6(MS{~$;|q)?{gD2Kl^;*I}Q*jk8more`1 z#V%>OIb5RM<&E~3ic~SoRz#;53mGk=|MmuXcP2KGahy)Gcw@){WMsOlt}}#|AA{DZ z!o<&M^P#A4mhXieui>4ydVqiUbqNxqdZ#&}Z}fYF{)7!{viy=pm3D5mtmU1a*|c4b z+`M>s4g~NGeMbmcVoJ`&G#>W1aBu-&(z;^6B)?Q1fP_Dh`E|ME=NpJnZLc=qUa0~< zI~z$yUJIOJD6cvD+1s}TZEkqDl!2j83;C8VFCms*lr@%56XIEdVOXwdSf~ACLUUeP z-V#+2vRXHDJE65MZ@v0Cami?jq=o3@z`DdPp?J)+-$#nbj@+coF7gUpx(RemG$3Vt zU`tv!HX)hO984n#nOw7j%iMZunYYt;{tcRw_qly~7@*ulhCW^;?<$a1N>e7q18i%5Ja2jBkIN z5h?k@1{-ts?bLvy=Aq6-4qu_s3H;(fw<1%heCU}AreOay*oIT7E zh%e^B;~zs%`-vQgEgGA%`nqH*$g<$Q3-5Euzl~sqyTqd#6z*=h)~M!Ihtpeq?5$FBYp2Q5k~oRU3JTkjjv}sr3C~Pw zb^J<{yN6*Q$4tS$KQSxGQnz5;w1o@>HPo zO6{j*@!IOImI-!A?U5e0u3&L64_^Un6(HKd3imRC5uK4FAUHaEt0Lp?z1sC*2X^o& z6YSU4yx{y={!hTz^|fo+YD0!raKskSH65j)1An7R-cy{?VstVX@Bv zw72F=nB>iBKx|`O1d?UbH$~I1a2iGUC(R`Sr;3usn;`q#c8p0t6)lx0)h$EQiZVcj z`Z$`KWz%+SPup8SXC-6H?~=cI3Vrq4g=s@cE2gk=2v^B$%}AWOoMrTE5}$g3p;@;^ zJ7uxs=EE0${t)jb7CysisrVdKOD_#tFa2Tt@9cJ)w(_hmm%l&w9iaNJz_LWqcI^sl z5wk6br)M{zXSfLK6Hk;sxZ+Qt6b$reKzwFgv~7_VCZB;16xJJGR<8%HI$1TehkK~A zvObXXr=`(WJTw89M%~Tv%lrCTT}x896J23jZXhjKGpAXBt}#r;fo`C=RI_SH!IxE? zmG?Rk0&4{nwlv5+=qSlHgmv2o3yv#%%?w+yf4kI*hM)d=!Lh^)#{I!}3jmSl0=*b!E+CV}}mq2o8q@)^u`_v=F$ ztgJB^NJ_p>rxZ;jsyXqftExyujD7J83p9#PSyOxK+pl(tt#O4w5Ku(%Ud3}Of^XgN z{aZ~{0|O{y<}ZU%P$+)Po_kp1XVq!B8H0JW5yooGKW2zVEUfXSY*}Kf0h_4fHiBz~ zh4~{g9tH$-vP}y7$wWMIZTWNn`0}s1mP)xNmC0<_JLWGULHBITz^sL)tCj5yq=_>&3e|S%U|s5e20jO16Mz{mBEe-rmYL~MetQ) zSWH1F=qZ@~`BsjVQX%2$FwFG%d=meGj_oQw9I+|<+E=%KuU-&caY#+#hBJr}L(e9V z{yB>gyxQ$tgW2VnMHzj&xp0ErJx%wsY~$TSE;nNBh`iO;GeMu5X2s}ub1jV1arEw@ zHQgx^Mq)hMOB@zt9`_dI3PZ=$B8JRZAyOJ?K71N+qr+x=#=KRCtLMj?)x$j6be+FF zUCvwm*>2@ev6`#qhj<8Poh>t?tkNE9N}6O?{h?Ry_>*{v z=q!|P&O(|OaV_Af?*JBUy2lu-A6IJ^e3@s(TE51Ro zoJ!~mzQkZ7og!9N+V%QMEzOntIuhHmWO*gG-MbkRezg{7A;kT5UnZLFv-GiG0pZIDfv#XJ140^yYJsU0mT>E*HL{6 zO>QaAlg`=}YNq2)eBSD|EN7iGyg8(-!Iu&&9TjC+-z}|a*KxYAI_r9WyC_}bYRuu| zKqKh<`In|J_}m2}PmC_UeFh^ne)@Yn0+^oIYi3G9o=OY&8$XB{PSedDy%1mlTs3$0 zjQBjk9++{PQ?^VvNYUbaeDc#p@MGT38-qNN2H}6_kVn{F+j84t$G5TNrw^AZ{UV9+ z`ML&Wlkot-&wK*E?~}>Ez<6EgY+8oTx53DfKV+%m?q7(S8$VmYwu)uZ=@?c*E|cG* z(R`CV4>$Ygt&O)RT>6881?rlkPl%Kyvf*S56o-i-H{u0A<=;Qr_bfInr)>>#L=&s) z`~gj-7v-?9WwvH>T#EAoswy}%V)+w^lK7Y|J6r;BqywuPnFs8n=w$Bm0$On({_W zLE{kDB7qMXD=h}Po!ppGC_jWWpP}rP38IT{BZpE&jjXh;2KunLv)X2df)C%RwXHB> zp(lb)CDj6AM&y;v+S-`HF$ai9y6>z#1G_P9V;A9~D}2*-)25)M)AU6?^CwzBs3BJ|qxt3InA0PYVCLrVcLT=w)Q>DV zeg?6gVvaGp#`IX1b!#E)p1tS)l(cQz(id8WqW`^u;@w^8yZWNu3p136XC%wHS&5Ej zMC)Lu!VQUF9@(OEkX-@K8t{s&t0z_0Y?uI{_S3PUKz5Zls8Q|UOe!#jl!Sq>)q|3D zKl^Q9L$nv{M?zcL%%*H3IJ(O1D|}ZrAs4+kbIk(fHx8WQOL9=9ZA$ysx>pv|9X3N3 zcN_*=AQpytV3A?5tcIlIP#dF}$T!*BTZUO-3E1T~_z9iMj(Dr`e^Ihr*gxOO zT;3FZ<_mpeh-V(>rjYs>=OvgJ@P9HuIkh_$qI= z0)l?;wEX;zCcEttL>Pm6H_eXN$y*HQ;wLYiW&0I8v~-p(kvL00kpAx#o6zeNf;w)o z=e)q5ysLSX?0JzhJ{Oakp@fm2q|!DYJ2twE*mTB?N_F?pCpV#`&q5yBBp5J>)}Fmw zk)YAsBx!DIB^KRKTFLyfg@p4x>7S>x)Eh#}$``nsNILuACSrvw63f(nVWTJWAE#Ff z!(Vy19OJCM;(joJo#l&O>`)9l*`In};toTDVdILEEg$sZ`|sb`I|S+j*NqMOW3Zhz zBgbOp!ZHdp_(vvRWw^pPtZtPobbr*MTDCt~Uw#8#cvkgHcWJs7ZhNllbZ3~qcY)l< z&;7F@T9<(Y7d4|5-R(((`sgGL}ySv-bM+F@36g7gX>!JFB?}Nq+Lhn%Ao#Z)(Dt zEEoA;o&u^>Ytdgzd4V;F!0M4yF_zlD!`{T0TBSp^dXj&DS=DCbP0S5{T1;8XNs}&o z&m7V(TuuK07=GG6UDQ`ot*t^t^zl@dqF>BW=Y(*f!x3_Op9_$v@4v>OYq0KR0ic&I zB_hz{25!0=Keu^53U41ZyS>ijQej{H)xicm<+xebE$w47@wr}T`cE&*4#L?q`yq&6 z;rd=+SHFD4s?6G{M1IUjRwt48U1LqRE&JRsc2Qj2-0)q|vFC@!)_vfH)J#KAqeHFc zRZqWzpZ(faU%O%Zf}^uI`;MVvIJ~XIz9LUzYUfCCj^2l?9J{LDmZ4OO%w+a5=-2?> zIfvg+W@tC=DjBC`y7VZlzRDGRqBK^rQif!tcFL;0t?QuL6*%X!P&4*sR7>0S?%`wm zD8ymd-g#+XuIPH%E|>gtYkrj3L31NZum6&cKnx=II}{X$ zyO9HPeO!E{gBz6ekqdi2WFBIeS2s&qs`%XKQ@FK}8k%8_hl(XtYvX^7GrWrCi66R$oBTWI_z`-B z*4IxJjoI?eG7C4nO`E>L=%CTtVsjVLZeGg{c#t`&HE-Vl+Nm0q9!5*T zC?n(6IZf|EgSsaUEiO^XTW;36{^1kKud%Nc^O*zHfFQMXl4jv)G1saR`5XyJ!tmgErA&k)^s#em8hkOBu=Y z0ZzZ?YnLy&=)|NDIjq%G`ts+~E`G>s<1vKkrsM~u!Na$~|0mJ=U(4N>Jujp=A2a3S z|Dy&@*go$-o|Bht_>-_y@bij?sr*p)%~2l%e{6DtyO?OcQD!OCSM{7%OF2AJ9^;2; zGu?j%y*TEX-3^4~4)j7W35~o!B81YLv%Y?<5;f@LMLysUJKLN>f>Z^3hozwE?jPZ| z%MtT)O6YUVMCk~&$_cIL5?0*?Ij zm3y=}__mQaU6ZRAgW}i$ehFR$wSHQrJ*~XuXsJ||aReJQH9ZoIYYL|MU#8i`RMKD` z*H+xH#+NL%+{D&M+o`zWFh!2y&+T5t%to220ltfiKjcS1#1IRM#L}87SbcX{;eRWM zwC+b52g|<_(B!y|IIMV028(h93{BrAcx>}zv)gxl|K6jq^t+)kY-GjzvX0;~LXT;x z{;$lu)i5_&@`%ccxTGpNfg34n|6G3iHopqsF1$Xfx^l{Wf2i&yUIk2Hob;3ZJc^9^X9@Pf)#I27||qu*#Y3r zLUP9QXB_dCDjrsu3fF>Z5nlD@}gp=Xhicb1`|>gwy2!>|m`iZ{c| z>m`*9<5ZzGpHk=VG+7oHeVzQy-Kgm=e^s>Pr@#2BZ74QBmbvjX6hDGB?(FIpI2|#d zX|gtn=o!Ien_3f6s&5JzJ2ZL#G^f~*nwf&baT$~*xjBZOx>W%HpS&2&5^OwwX4jtI ze^KiEQP1*WjeyTXi!|2XYcM9%R!0q9La!&qRV%37R{nCGYRdcL-`1}siqb#+PCm%` z<1t!nBI)}((ypMJy5U`RS*%MLn?rs@jdGi|>VkqNJOHgiSd^>3Z91aWd+!}#;qT;Q z+f8RrD6HldwhC{3yjG3I!s1>Q9+SBH7~eOtXPw3dVmf8vajr*2$t(-K-SGy%p9Q(xW3`$T(t z{Q{F>a!#7ezU6IXr=*tEo}tBoqC#oH#msh=dASket3rL77cNSf0{!yrMjMwiM1@MM zuDAPmh1R>e>8Tr+VUnjA#v3W6g^ljdM1(O)mm5o;Dl&989uPFGerH_lVxB>ycVqEc zT5?KpVY5%mG3KD*{)A0_J7pu^(D|*c1!m{_CQsSM zA~BrpO+ssPb61i{HZC{*v;O@kIK}_@`8cmnV?3VYy4s8b zA@qFE&I~E(LGhpFn&IkXT93MVo_)K6@;^_SI#eeP)(4 z&Sy+~xuHJ88_O5x<72M3AzAM(uUd+M{2INaS9+qNx+9e9Mcd=XESqyOY=lb~z;s6V zT2-L@XkTlKN>@j_+Aw@PsWXWS^rKtG-%`Ylb(YN0Y4cD+EGeJzEq+aZ9-f<>%=p>b zARN0A|2$$(0fSVoXmEy8)nVI0xxQ6<$ixy;QAi|rhdwnzA+E=DP?r&GpLRWOLo(w&g>Up5_IgW#FHgZYNQ7q&V~f2} zkpF7?37J@OhVbBkKQ%v6O)3gl2%A;e>4)43J=&|&}lbrz8U1l4*>6wMmTFw<6dgZk_ zo!JeNvFN82#YwlXJzCwLe3H_QKGdFAH|O_anQ(SW_RFNo|H0N-HnrJ+>$at(ym)bk z;_mM5?iQd(aCevDu0aD7ch{iB-QC@a2KOG$r#-W0f65=o8wv`_Rccd7x2-`~*A+XozcoSlh;z;g1^~gdW5XXRD|ZtoW>h!kJu9#) zeGXZN!u$oeN&6%GTI0*mT03r8f}fZKsa^er|APcxuHR;2nL!JZwI0X;wF*P@=SnbIL$xG7S)Osm6AZBR%&fvJ2&lp@l^! z=QX1&R%O^L{d7lnEl+ugT_MtC@6!2!r;jDDjU!;>N7k>ySl1U$iZQmB3Hf^Vk1sLd zJx-Phw1Rs|xH(_{dXk1KhMK`ruoN)w4?V!~aIQ;a=^95>?&=t^5AhcnO}SmIE%|tz zm@z-ZJvjR;_RfW`c^#>d82OdwwoG~4^n840cvt%Pk6t_ zd{%XB?G7hhaYz7-jy4+4+BuR{ib1m^aDtMV zCl?0e-FogtVK?C3h<3&ES$a%}j7YpWHQ{^gS<5wigiP-YH44s@&Wc50Y5f#J`jrbc zkdXhBXN?{>-h8u2iCB|;x_>Yy=zA`OYSbzC=VgiNaS)>QC`b3|$R581fIoVBoK#_2 zQL}foL~m=g{nmdu)slK0I>NAdJi2RbM}<>9$D^7v8ha>Et$}r|(4M2N$TkSnRY+$` zXI9=FIP`pnntk=%2;LHmFfQf^PGf|;-WO(|h9f@p$O`^*tx68)oI{@C_&7EJHvf+7 z*cu>XAY=EgC;jI(J5A;j)l<%8eT{s(I0i1S`rW1yFI!Pk(UyrOIoMnc&iU*7Ewdai zMW7^dM9pOxv?z5k+2Uwn9N}S4bnxVYQQv*Md+Ujc6V87!%$k4$ZnotDeERh7R#rk( zLsUrx{pqun0xlhG8UTG4G*PsQHPU7XsHj+@*`=;&% zJHC&tij^$t7nQomL3BQ1UfxS-KHGGgCbvnKxK7P$CBU3qQm+0qn-aOkIG|BteM}d1 z)WMq>US-vIK)HL47q`*#6UH~+%iBrEA8{WI4;;$H6z{`kC=BLy>fnj3{LQiIc0lM* z`X>P_E^Z%LnWczXBs3 zEzG#7FAL=JrrX3GxX=#clrp%rtw&HzTs8XUL~fB7fqH3q^=U*dIrYFQO$)-F)S64mQ1NLf!ryENp0BcP5N0 zULMRH-@O4N%r6mVhe^-vRX@d)K;#1hb-Xqf$(oFu)j&xzQ^_b5B_WZN1RxETQX~oX z4#UqS;NmJJ?U%0)OE~u>$sk6n7w@)NBoyTAL&{`$-;a(P4@oH8#Y0hc~4a^UCs}t@jtE(XmsP+_odznkc z5Nqd3PyF>=uk#l$uIg8f9`v#E;A)cX@s-UV@^j$w#rJVWg0SRzkC*hlG%AjKLolNA zBQ+`WU-(pLZ#cozSrKaB8Gt$I ztCUF)^J2)2l6YeyV+w#<_>jHh(Y^#DAl>yyp3}b3vwaQ?YxJirW?!W7dbPqqdndf3 zGn@l=8??UTUzHZK_pfZH&6D51?o0pxnc5a|+guDjVeax@L^E)$DmaId^;yX8TyVos zCrOfBGJi*ry%U9yXm%m4xaG?Riy(0NFJ<@Tjwl1LjK*< z6)F1!Z{9K~(g~TGoJ{r5;z!~|Psr#ER7kYn>ltnDNKqHS0{JXTH_a=x3MRUc(l%yk zqak@>N)YG7H!sgOQ$`y}AdTz#g?sG>BjbqrV}d&>Y1naOZU;aUz31yE5Iz9~S48gH zy5Sl?NYgo0_XqlSPPfYzon*7dyC+in&iUTCz*9?dF7WFoV>uf;n1gtp8eka4p!&^5 zX9o4_y8UG%!{b5IWDK}-(+qmHxh5d$L$cV%BPtgD%3M{ypP5fyw!v`FQHF=vL(2(} z+)oed)j{-EapYPP;J|eiT#b;QdQLqc6f-$&8}}G;UA03NIm1=YMcD6ALSpLk76CYn zIPdxy6`ahQU9@+a%0`@9z5{B+U0r{L-`I_usAl1^N1>wR(*&XmY~l50r2famLFFiG zav5&XeEo=*K}}uxxVHfG^)f>yxxYN}&|bWL6JPXoFmE5#)5hM3AYG1?2$1IJvZo03 z9$r1IVEc;|0+Ca4BcEOXA+Omj*AFGC=*Ejt#`E!qpr2uj8mll2eBMb3hjo%!Y}frxy*;TN=aPudhoQqb) zXh)2Pe%DtPumwEky2)GaPgK*VK{K5Pez5@3>%%Jf(B_ zbA2;-+;4Ym0wu)OG5=>WoEv?!ifvPlF}(%x#qFV~PXLOYQ-OKb7s%-cJ9qZ$QjWk~ zC%USZe3TO=KHGjabVH{~>yvcU>sgYm9mMFrDT^Ytle6B%gSF$dz)K1D&)qh|2cawh49$j~A8Kz)ZxprNdh<-;+ge9m^JYzId%tfdOd)3 zn>J7oq^X>v4s^z%5&#)1C)R5I(RkVKh~}I3ThBwzA=Soa0|?a1JlU59+?Dlo8kpg@Ilmw4n$3pNUS~^ z(gnKS3F!;Gbwt45Qq3%dKR>D{X@_0SG*WkWwZ~loS`HCQD${AMskplmX4l2S?npbP ziG~ZD9I!{%@#bDeb4J52Vr1%A*eIDnVQ_3I7z{#pT5nAr6^K3_9~$aXVrGiMIuVRc z!(?KU4FEFzqZ_)FRY(O1JpQAwTi`sRKu1MABIB(V`5HHD+JP?`;?un5e5% z3qnCP9f;u9(}~ZOO_6;g{1`sDfP4OudU4~qH6qfz6H4INYL{>jumT3iVD?%Gm~X>8 z0aSp{;j|13M?2nEDx!x`Io_WKe>`u~xGzi8u5sqrRgc)ZVY?(dZ_F<5CiN&S5n}ze zxU3mqt^Lmb&&1YOZu#6`SZT}G{mE+O05qhxgrvn=)UYC$b)Lg(>pnK1XZ+S6-#bbb z31lkMIfvIawS%87YgGPxw!$2Aqv2SJ9xSIITS*tFx>7>p1To3Ru%Tpj&@r7FjGeSi zxwE>lhpXgTt2fVLtl*}t@4D6V)%!)*+g_NNJz6_m`>-A$UoZSrqj@jZ$76 ztMTWsoC^MLNB8|Qj{0XO^?m<4N&P>2v3KS30F27C)D<~7J$hLy#X`CzJi9`R=H%=p zS#x`w6J7($S$$a_@IsGAWy{2;T3n^$h0CAN{UD$KlPeP%T%pCa=pbq4;2C^Um z+M@(VLDEFZ{{A#H@=IzejbTWPB`rCb;pRu32cP< z=NWlrZYl3wykSx(>_Yw#>U#}1(JMC;&NIwEw(rDTz|0hn&BdwndAB%Yf0N|p$Oa%qmj7-d+3>d6w-ZhVa zjx}O*qFs0^n)pfUlOKYLvT>ifh(R5~_Q!UgmWcPq*^oBIpO)4f1Y+V;G+wQc%2E}# z^2U;aZ~>PJrpk?AE)Td=8FI0%(#X>ERHkL@jT@{H9GMs^!YVtc*lzSv)9*2L7hk<& zob8eZuz1|cS`~v74#5`V4aPs zvA7_;z1UIFYZ_tQ>mB&@SicKyRX-onI(J9)SE_lGRmZaV@q1foSKrbKw__J{l*o9b z;^|qHo(|4VD@yxOpECv{#VWJ=Jbrh%2~SVYGPZ}ZNTXzL?~d#NAdaa!k-TlIQt2mI zz+#Ie(}Fp$p}^?**pTNznM=pxyw}CL(B$hYkKjZnQd7M1;W8^$qsR4?aWR}lIx#-b z-#K%q&Z=0NS{IkFpd?Qn7Ekdmj+LEHzNBMGkSCr?+gHOjuem;V^qI-J!kdO!GcXq6 zcU{o04!v@EpOX`#-)-gUKv-J`!u-aL4;vl_r0F+5?B)aHwgah!_d4rXe;EcWNTM94#WuQPeEs8vC6+C^chGa3P8+Y_?2uSisLS;x6eXIDl3#Bt zkFD7t9Zz%RC9E(un-Lp->~w((*$qjh%Av5kDclDqzSOy)g^6${BRuW6!PU{kIAv_e z9Pb1_zXlSXWq}I4I#gvM#@p$ir#QkX!M!*({hgQ1pN9HzKAT7!(VaBpB{MCdX08JJ zdntcb&&k0%3YC|Jc)$MVp`?7Hk`v%~AJKoPTU=t1aeR7I_JkHE|MGE|tDjyNQ?TH6 zG1wSyZf18#e0M`-*;pBI6o*4@!_RooEZ1<6H|1^uVq-m)$^4DGMV`@Jk}c^K(%r}# zeT{2!b1v=9lBM;L%OL^P5jfbIc63HZ#-U*I`?PYh4Vy@FBMNpB5|Q-Gc8To$p`{8p z6LM>2(U|Ms6(PZ)g5wqD8m`+h{7b=fitl}FiCfkXs^tGYI(I1b|S}Z#=RDAk|k03`QN0ZOemA)H;-l$uYH0E~P zRD`*oE~7|8#R!q;)DrQPvcr3VNR8Z?AUHD5{f4Q3Q*~?D~ww8KnzZ`K*|c&TWm12Uv$wW_L*9F!w?H+?I| z!fy0EQEwI%Jfiw*#)JdyQ6!&Yz;0LuZeN#1zPNzESuCuprKZ&j5&>nA;8vJXHaGB@ zLvbI2P}C$P>5p8`e@M>x&YtIwEZzR6EW$qasU${3J1wY#kE4B7e0RHhkG46y{DWiK z#pyOSdu8H%fMmj=+FOI1)BSY?l8>cgs4lIaTt}*${hZ}V;?wU>juqGC8iONkyLxyw zj0Y!FlXu8tuQtUEZNJDBiC%ZxPz({bA4&?I?rl@)#66q&vD3XE4L@k z>5LP`T@<-tm4xNaE~WItMeXw<@_DIYjlP*KQFWN7R&+E;LOALlCy{2VWN^Q4Jw`*n zvj$6^P^XT`Oo&iZLR=DEwX%M?b&Xn3s^WlT_XT>QAqc2E`dGHP3!XfZtAqs}Eb3a?SP zYLNbTl~A12Q|_u43#%}nI;*cW%pT6r;a?p~Pvn+#q)=E?xQ9_l%E&5y4>$=4p=4b$ z>{+sZxY}{kz4>O=O)6B*L~Gny1jcruojbp)zf?Jl(>l~bL$&bnd=J_G_vC#+WOoQk z&hGFo|9~^xN@Kihz$g0y1!|Wc`fhUDmhjS$@UTm67g66{007YlfWrMncYNZIqzF|Jsigs=HD1Gve)SCBlGv@3cAd_*i#(Q zeDJYo-4L7@h=Y$zHdm{Qqlk?Br?THi@;OibHu(0sD*=KMt;2Q*2 zx?vP+DK)t{l~!h091WWJO7U(QDvHO&F@31|QPz0jTuew~nW`%i5UJJN8f{Ys${+C- zd<_HCT(8hl>TW!xBUL}HsU;vZc*nLHpMvX4lGWJg?uwG&)V(#Y$)a;-cW%5rGYi$} zv#mPO5dK&z>+<;CL&@XNTDAbL{eiCmV*}*@xRP!UM2mv`$h%?Y*_(Z2UNjCwbN5HyM7z} z05+P(z&a-uwtNTZxksyGkVXBTXj4r<5^k%oRUk>s%>w(1FAw=mKz(`*z;f@r0C*LS z_<9HMYS)jpcZ1_Cw|p2!D|>rQc3l6577j@oy`)8S#Y6Bk&j%?3r}N6%@ma ztKxg#+_WxeP8Ly-M^h2aQHCC4sMneuu>dHX0P3U0$vJW3gxGhK<9J9M7C`o5`a)8{ zaFs0y7++2vp3uF0{K2+Pp~@|+zy+ocI1rVJmP{PvxzXAe{>Js0jz8z7=X<_jJ}pXg z0R>O0SuSqJfggAKe^?RNyH%v~)LI}L6!&;7yl2c}2(rF_=93}pv_(T-?i;@!v=MRO zAdoDXATZjG2JZf8*OEX&PX@DqGKs#yt=zShmNLFgLGT<>Z#a^`yC8z(lPM9ljf505=0yIu7{juK}UK&4da!D9m zWy;g6Bx)8G;#A0^=?ki-c)`Pv_fivR(?LeF7bRRjrS(ImoMr^8ctC?Kcs?d19#^01 zfZ@yt^lC}~bYJh!U0YO6%M)pF^Ug(8I)}2P%6B->dsn>p!B_$Q@}s61wk`_Rf9IxD zU2GM5^5lA5d=9(04xk%XX|B|M$4R*kKus)A%%p&lF|KDF^IL=3@t9m87jJ5Fqh*E- zEufU)1HIuQRz$sWbdFeEcU6P=QW_OcF~b}vQzL?RBT`J)i#rm%4L8^RG$u~}IEwIo zU(D%i=)4D~^?G#hvAUPQ9Ua-D@iG8)Rb<*bNlf|r6~l++Q-SjLf6g3I_l9slyY-=N z=I5*2G~1nxiP!VVkCi?zqFjUZQKR;j>ys)$$A#4H$#!V?)6XuG$Q@I88UekbsYzWY zQpN;zUD0(;UiQr60Wm3tA?Mu;#n=O1Re>}l=sJhZqnbQEPE!w9?rwL?EzfrubMV1C zzf~8#Cu98w)!y6Fq9eVoroc5O@z7f)p zzAt$zN-c1|mUOlsahVg`YAYxMt{_)rt#-8*m}%wzjeK25I+$zgfaAPw@SjIL`S3`j zBdP^RbIQ1zoOCj$@Ci2G$(?#=ESQ1WBFP{-qQ!%3r7!yjKaRV7bK)a!M0a$@>26qB zEQTQ*0J?k>vqo$I_GtgvEkC+;64fW<0dto2NzuOD0J?P<{$lR{czD4$M3XglY#i+> zt-a8+tfz^Q`LReH!^2GSkpYs`T1Cf{N%8pP&m_dN+KRq+8pwuDo%u^ zK(Bi3=$&n12QfllOT_qX`g6XVDdl|~2}0SAG03h_(9dw5u0-^SJ>SUe4D8AN!P?E$ z&@ss}OLs`UMXoSnQGJe7D?83^?^+eU{k~+>KT};K#C=O&vZ-c*$H_Wte-5JwW+i>x zHPgN~8hxo`a@mc;xXW*-D7II9{^2CibvYe2NFV4lvnYY@e=bqv4zY;uT5!58BgwG@ z8!KIlLEA(ZmJd?_JkwIcNXO`RZi-2D5I)}4&v_x&? z)b4^7H3{iAdOH^5d=&3}{muDN_0D)z|Mq8ND~GYI52HAe36EpARQ3Z4+3`px(|6ZP zm9NOyhhu3xl+TC&9|Fks1wMmmmV~bg9fWlyMUrZo!l$o#9%+@+Nk^@qH0D+tm~!`*=!+r$r|Ml90w!1P*GHC(ILllYT4$0qWqnKFVoCe(%I_{WTv*1Rs`(PI5V z%-CJZjiDjSfHUV@d^A@(PrVD#C2m1RlshHx)LagvvvnSGt|bj)w_bLOIA~Mx#VO7n zK(pxB&JxDI%2SO^b>k|9|il#!Tm4&ppPBSmZ#en?%W5=(|Y)0 z4eJMZfw;hv@I;QT;0L)6-SjRfBGuGmi-4mc4GwDtLxt?n=oa$%O-%r{FE|1CG zVdVyfwt9J=F7He0>j;+C_D;XkxU5Kzs*8BF|Fie$$E?j(%bh^?l!Y|c>%-i<5#2UY z7*zybd`1#`>NP+-w_1%8RNOVDx_>I9ip3L2$o)wGRX7&6t zM4gG11^joY=~^TX=c}XK>6E%TcbD68tb<(Kzx^1jEr|JmtJNpB6+2AokxMqkkh4f} zPnX&Ftn*Dmw)SZwOlsB)QDyhG(aefZFySsRGvP0?N-h>_R2I+yD)7ChQ&l@wFjYqE zDL|L>Jk|sL5XWO^-@}od;A>D1=N zB4y{3Q_aX&>r#gIXS)N8s(-!h7BS22iia{X3rbGva`u~Rpo4$BCwL_7^BHccDu8;h z)c1`+F9^pIU|ne|bL0UlEX*QJwFIpqxjMQZr2@3{%r$6s{`3$?l&xJb9cx8>w-qDi z-!)n;*YYlU8cV8f6^4?a^-9Vg*<{HTEIqU$?68(4ftQ%mxz1ZUm9^SUrS(l20cjTt zbhh4VT`=ejBX)(YzeQooL4O(1wX+*JZfEtDlnr!ip1aBlLC)%MRKcN1yXJRZ!6`LU z<(i`5awM36nRSgp&wuSTubUbhQ3|Rf7gz1W+QKt(4Yv1p3KZg$N7Cb2xdkTbRwT_) z8E0qMl}v%miolKXuV+h!U6VM%9?7W08;6L@TRS!mn}-#b8;2h|xGp%qOd4_q467(o#DE2J6YBs5)`c zKMpmv0=@JhPQk^?JZ3Mr4}32ng@?BrP)bM>MAnAuZs zzh~LtEUd3=;&z?U+sOYlgvnwlZHLoaQq{JRKF-lgWT zD0;H^v(!sCFW+W~Tz5_muG&^r&E?O$&geY@!SR+B7n9%N5G_P%Z$7+goBjEps7t7^ z5wXzO9VgJrk&FX>T1gnh%QfogGJAV9qmK|j(=4yXBGSpuQjX}$z)*0NpFoFOTw1Q+ z1oh?C&fo%j$HS^!*G-W=K$vfGE-mhQG&p))p!3h%lG0Udy#4iG^%7ow?g{mlc<8JP zj^}x3bjQDIysn1@pYicH^zBq7EpU!|WRUFG5AEV&h{xIYnhl|zHB@CMH?7aX_pCGg z5i83g91t>_&JJL^Svt1>SBYON~XHD+4Zrt6=SVRmN{oK#$z{q7X^ z<&tR`Z-K`7PckT#yGVYfij(QaByc$2-tGVKC6+M-TeI}QElu{!EKNOAlT?dps;Po) z@Hs`UDK5x8a%WMT;~}RI(v~e+<|DD{>RKudH0~&qVL(MuOEHp-Y>rCut*ew9#cYQ1fIVHv9LGGu({S(nMF?AKAyrd>Mxv!!TqQxD>vGW5+fg#b zs;;UdE7_GOWd|EOfHjXrP&UG8GD2U%IVBTq*tL{8x~eH5W`cH7rlwsUXZvJ3yr`OE z^h;2sYf$feRb**>D zR!ISmm32uO3T}**O`6Az;C8SXecTm0JLsWri|Fr2e;mG5>vZ z#*DhSC*~}qJnx$K2Uh$q6p^ndizF`yiBfqNC9=mglY1$$?0^3l2xQ%m&{UDN9c2R@9hf!t&o59TVM(G!JiNDest~MoTw3@pRI>K+H>xSwHlV zkJiL5HkzdL@u;aE{p4|bMCL+m>yqs;Pfv#I%#$h5NlVzv$))QC?U%;`0>KVvg{h2c zwL=0Vjsq-cZz5Bdvqw6;U@Z8;UL&Z9osn%yx#ec>sO@QWgNr!ZVNb&Y%R@SgXKUk6 zY>!lq0SoI!N)V-RTJbMig%c~nOWU8VZ2;#|-B$wzF$FSRcsw&o3k zhdcNes0)tLqZ!o|c~y-7XBm2nZ>J|^6=tnXDDqxJRo)GHi#u_A7bNz(WhdXTJUu(4 zH?uW&hkD;2*u>*{8f9DbZ*CnvZh;;Lo4GY|U5|^OJp&35@L9tPlQ1&G{G>ip)@AHV z7qS5o1_tEt_I7Q%rqfZw-CkcTNx5(Fkcx|D6BtqxrCg+_&OWQU0QZ7OLazaK1qGmULqi zfWET6JtRd{PBjHvUI|OEKKGcpvP8`}kc_-yKP*}E9L(gfmvA;EWJtIjAJ69*P#cQV z7S6M@{>OvFoyCeNm8WX&`gdp|Tk`(2Au;iZW{@I|8DkDhS~5XaSeiu}g5@rjg=YTs z*tss4ZQr>!WhD47p`rEop|`FOC%XQWGM?vaE0X`hD70Q`l!9BU7~936G%jt`rFAj) zi*V*nLyL6lM>7XLI49{34+2cSSNV`wvk@la$%*gtJA9)m{@KIx&z6C-8ZgmL{eC({ z_;(>fnnPur@z>+h{u2>+?omX~g`~c2qw&LBl%boNw0y5-c9bfrZ`^4zcc=})taa1r z;}7z)JjrQ&N8xfiMcyNqoJlwFH#=1*aa{P8)hSzQtX}1X)<&{rG40rN`FZ}`o6(oMh^T%sZTJ~I$dA9T{2|L#gI-Io(u#`A}EVWjqtuNmyGQyaSGgRBH?iE5Ec-ctd zT*Q*8O+emifIF65_}`()7u-qIA_~4=xbY$;zGP)ea)*v(sTui%*b`3*I7cjc31eVc zX%A6iB1lHeNtC6cqB;<5N)yDUZ@pc*ztL96QJxI6H_7B7kXYMa1%ofU7Dz@(4731E` z2ocH`YiGJio1D}Z=!Zo;ORPyMEiJ?R;oMzG>%D+i%(?;ljV+e{x-XM_olBbKLu~?}m-1bFp@B>z;g`Db9dkp_xd%&ypL`5+)m3VxW&H@Hp z7x#}o5x%=q5HR7~tn^t6bpi&B95k<%2!OB9m=7TK1y69jW`C;&baUs#_|Mbuo*bvi zd8)r#uryDI7S<&s3|*3r`$x=vU{M3i2ek#C$3rG!(w|(u>}chJARQCs>c-VKNX94c z5_$8X@lB6pi=aBRA@=cT5Qzr0Q5k8D1dkv=ic}wzCvKW0BKe=TqE)CQp z1Bp6tIJ-pIky!uQ2@_gZ%!6~Y5Or12)jtH03%5Tu-R$-za2|ZSjcc)A__IG|xPHZV zQls!2)UI7bRa6Pb!FB8tM!fh(az9n-)T+}IN0_;aI@RO+mq#OzBylOyE9hHfCuE6H zFp}u?)8RBGy0K?yLUHu&&*WnC`HR4^&vfh$WfH)7XI8b1Qk1=hY zdg~VI_bxO~$n*Ez6M0dELOT8p5Wz%V)CW-}eec0 zxpNRt@|W`wmy!QpoI&P?CzZC5*gto16s<+u^^_?F1gNvRsr@U(m`oI&Y$qoQNhNTs z)ti=nuO~9m`%~QEyci_m6$|!cTqOHA%)^%_%`lVU7l+&pUj66l=~V!YLn>H_q`yuH z9*j)=s~5mf5c`*mB88QZ@0Ec{nD;c2_-o!IT)T6MNokl@i>+rj7IX5;ZDYYMM4SSd z3Wp@s5-u&=5`%*|idljXeu(nn4T8VRVrH6;hs*GOk3=N1sia|&jloEKQZpPs#$RJ) zgG}z5Zvo|dgk=%#g)Hll6b?RWZ$ws#AG1a?@s*aszd8k%o5zBhvd%SRFH&lel6sSA zkRtOq1>@-{bq=vr8T|)w1Ww2cd#NFkmG=8 zF})Q%B^!r};Cz_35^jVXetlv~v1N&HskUVA}s;R9~{P1N$dlJ++BEMCuX=*y<~DE z*-O=s`gZA`cgTNGpXM!t^w*1RiB&y+p7h>a_XFs}r0?c`ZNU>`B*nasw5!Q5j?^J) znBT?h#Q4T8^%cjX{)_BnI)olH77xv4-pQ#gyM#FMFcMf+i8xNqrYoE3`EXKm^Br4#xc7yOVmf=PuTG#t zAh~JBnQRXeJ$bX!#usQE8XyP~)2IebTY~yCAGWVuwW`NJ%QqMLIpR8vzm7dA6B7{@ zzaB)Nvg_39^n;|6uk=&Le;v>=+)o{K0b$8dqcH9P zk&rF4-d`mySMBUc3lHJY5vZuWe-lX;`-rU_ynI@59aH(Qz+-1EiE>XewFz}JO#!T` z{gHG!twBwU1ht9he(Oc5g?bL9p(xKU?~zSkspjk1n!^_A76gba_VaWwP^C_E6IJ>~ zAMuHi=A1neqQb>F1kkIEd&FlDU)UDg7ciqJA`)B$e%+Us2!x=%JM=ok*iyHpRB;1>%Kh7XIDt!0#=i3Vaeci=I zn+1Gy|6R-IRn$Y>+PQoChJDNbe7p!-w)A+nyqv!WsQ$Yoybf6X$KB&igiOvckG$g^ zCnM6?)vUT+{W(&WnRiXpw;VpU4NG3JquZTaLg zqr1>=b|RamD?`hIab#LB#-2#oAbWEav^E+AMh~pgT9eDR_%FEWOG#B0pENU*56(rK zp|ye?ZmgY-q5;QBIPO*4o*iM~h@eO|Bv(ulk@rAxe&vOy{eh-NFd!0j(?9NVy>*iM z(%=a0va{df(&%Uwq(1Lel5on;$^%#ATt9Hl=ZwHO`&!W7CYE&955Hozzoe#OOSuF$ zOV5(X%q~BK9>Kg7BUU*AcRM!0uKuH46MYG8a15kR@!Qb0IjHa-%md|z5D!Bj%Up>z zbq$)UA}v@ZGpP8!XB}-<8X`a!(&6`0&`y`=TWHoO0#3Ozw9Hndpj29OC$FPJ31(@8 z9$)1|uMRNqEM8SBI1)}?ZYMREjCCn0tt%> z_$F4hs9d_Da!6+-#?XK{=&IaCukIU7T8ODG5i_i{y1eg^Pf-X|>N zMC6!=FBNLsq*L`WG2Y$J+iX)8YolXR#5?142DUk16Mx$kfVElv8BEK_mcA=y| z$;51LdV6xbAzy#^)cN+j4vusfAH~n*`!cjmA17w!v*T^w@MOdfT@#^QPG(w8WRm!Z z#tc7{ZLcvSladNzsLX$JUiEqlp?!aT zH;;?ImEEpUvLL{?us7W3N=A*hH@+MW)Hrl+g+!MC9(BGF9G5!m&Bs{@ z@ifKG>6hRUW&JD+NbgD|=0ZZPb?Pu$77_M=>(BJoD@y9r5BFJKUmM8jVS=yq@IA$~ zxL0<$JLcNtYY07xSH9_u)IGUbG0pNkyuu`C_gNv|cX6)_7uV-znc)tT9S=s+1tm>yv<5+E`M*8 zP@+$nqNf}-czP;oh<>^!*EW^GGm)&0y6_))9?Tkdy;N1azD8R-{T*VyTBWDL>iX8V(g{E$45ST;F_2lGg|P>~zNhh028a=-FrV|s%zKGMg>=D`U& zKW*sQvx&|!@J(AQa*Nxvp7qv_OYMuR^YPM}l4o+tQNNbS$l4IHA!IW6t4vhkcRv=6;KtKQICG@R6oS-;ri8#Bw%%U@aB$dvZcw< zzmG+lE5;G%F7|l&sqX??FVw-|49Di&CP9vOaRHZhqRLoXos;_?(_TwW$;}NrU6()} zj=zan^~!KZNvfcrR$C14%%1TmxRY*kJ#Tl;5A^!n5!Ah5xhK43ec;dy`LyLbIbkHw z*WJ;b?cnd5WYpOZc`4A6n2k(jxMmV4OaYx*O4|1R%pH(0%1x4bHTpZz2%z3K<LpWmY8pd{m!Izr4I3qKpd7YPo0GoRgGI)O+jgg! z61x}rnNv3#CaM{%Yn88MDrsPz66os31KyL>sY8bH4rhh=1CQq`e1YZYGG>8>3;p9N+-+hXZ|5wobd$k|@# z>;tR|^?o3z?)O{`O??9wpHcZ&1!7hv#<|mZm(PDHw}V*YgOQc^eZVM6?N#f?E{@`_ z_rI0~hTfPA?dlx!CqFzM2_=?X97 z_6)QvRk};w#qz!99DKv{IcN8dZ{msHG`lkEZ`Ir*j;>Y+I|N6Ux;KWn19&Iv`1q^v zS*vjaOcfaeyltrey}rTvKiAhn`~(S!FZYiGpmn@u5l?=vB#66w%u2pO9Rf^1A`awY@00FQL#$l$3DHP5C&-vT_c z_R!s{Z+9rkh5de7+S=2Ki=C|vmJLlx-dHj_)9t_KO%y}HX}VoVmf!~2CS=3*n$Pn^ zgj(3YI(cf!75eI1@U@?x?Z<2P#zb8nw&CW&aA@ou;c{T^E`eB0_XED=QBzyLPE=*ZL<3vyYIiZT}NFs zctY)TH5YFA3;-E6+sn1f4OsYLgi4c2O;@|k-||km3|D4Gzv&~V9kzR2p5fw9={=sb zqEwqX-<*S9?^HO%uYGMHz-1tvHBip_gUrN9*-0G1)dpR4m4KBqLAEoawfk5YP6q=NZ$4nIgt~1Ij+#B;_osEF#VW@ZGVe{P6x-vQ`(r z@zD({#wCijOJ_qWV-pp^9wIAHOHJEs(7-;A&xq1Q9CB5r=Y4DV&E{-AjlNWYv6!ko zs_rkgR7{mZ#OuQp^JQR7m}g5ts*RucID(JwWo5WhRanNLc^pDF5j%Zod}b@#>W`qs zO;7VMrtsk5KO9=s3Swx<6Gkn=#?qwvcSX0UG#M_sE0)#RLPoE5gg2Ha{E5BFkk92E}p zr2BP+JOL$km)-e94CJh%r6gROQRRa4(5ce$nX{u;+1g4*DIcF ztYJD=&ttM`s*E$G<>191TlSpwb@d^OufETSH@G(A^{u)#pQ@*`6>bkJlUsUW z0%gluudhp|mqH)KyY_=r!VifbDeYkz|5zaYi8ejt^NIOkCaOC2Mnt$)U6$FRPio|LYRA4oS*k#WNs zG9xOA;$>;^rp>q4;MlSqQeexMDK;%F4rgB0Ve`;${i{1p3;nJ9X>n$E*j6WHq9%zt zVVn*WfQ?Q|%ui*oBA{3Lnam%$w2adFi!X`K@XvMsB?S=PyrD**yO(qtn zi??8S+a)=*>Ed0KXcd!a2&YlLR_2_x*4G4sa5=<+L`3v7I#aZy6zxxtuRQMe3aY^< z6*^j~kJ`RPk=&erw_)dq;IA0%6kA#B&ujBCOHYV|Ea&_9=er%aJkSX$@2|L^v1 z;|ukI+R4MxWjxn4I{Awu&G(=@_}b3On-|wBWC5c7yhro9<3V2m zD0b6-Jtg25uB2g-Tr{&spCfIn%RoP>(kclA)f`9Zr-D*}uS^uev<_Xu)L}_WJmD7_ z0>;U`$N~6i%JU9`F}vxU-}A1l&O74?U)m_YXK^b~>ByaTiH2s8^nyD%L(_nY;MT5K zL7&tQcaJU9O7L|~V-FZdP3&fU(}x>oDUQB~wSNc{t)!$%Uyek-6TR+XIo)ZUTI0QS zP7Ixze3qrWB2VTabb}BP9suYQs(xKOV#Zzp8J)@i?lUvRD{_72HWf0bfqlUK_Ugwo zjJHAur*kT=Z{}@ZHR>0KQD4xzccH75Sb=0c55*GF)o4^UmK+Ie#<1jsYO_WG0?Mv| z$~YRZElraB<|jk)v9@h2?7{he`=6+uH);P=VuFk0;SyL`3cjW+u*vftCv&}a!&s8f zOcxcn7L1e9A0lEz1)|}10^~tV^6xh8mnouGr6fc;s3J>s!p`oZIZk{;LWOfb^`EZ4 z!CyIMhf>`yH|IvcE_;JF^`0y^5+1(>ZakWAAcB+$%iboXNcUqC5YdSiE@mqy(}lP? z@{RKo4;rR<#oXIZ8W=}MTb8z%yo+GbqkKDAh3rNSrqSzo+>Lo=BUe1LvofdVD4}s( z?L7ovL9eOANLroBX#FQOSaYJDS>em$+1xi-0akY4N{DAI66I@i1c8kVb2VS0YHfABl% zeO^YyuJSspicy50P*vNF=2nb&XeWI8$z~-XP3ZY_6{|ztkM+DfzFz=nL+;eW++9r7}X!Eamrv{^ygUYX^@0sfs8nYJbsUC^BethzB_@ zaMZz!t~px|%ehAv2{mt!W_`W!D8uUS%5z_GcZ;2O%Q3W+d}21#)`$OLK-LNMQ2HBXo}{)Oqh=p`kF#|ZiHd2 z4`GTfOZE8o)88xG{dm0}S+SbViaw-kiW18_JWFU*$N#~D4EJs{*G3fBV6`T?2hi+` zP26#vE9Io7s!=E&m}65PvFW0(u9)wJ)}F@&9?su`Nu6m*&Lp(3fob%$5=U_%X0~V% zMI5X*uL^e-I?3rhV2=D;9ZktQjSQT}*)e)p8#&%#AkD{PbIw7EC@KfDH$=D91BZEk z^wg*V%%XZyr#X;{%+Ml}zk)~e_hXAJCvs9`bM$tVvhT>5k7)D|DoR{&$V1?;Z2wzl zv{-A90`BE^SNQz^XRS!)${JXSGYSD~tTJ;&vo3a#hYaRwm|>1FtQY2IH+-lsWQs=* z<5U{NMo?{>_76(a{pcf{*T+tDlU?$rVa^pLg2t9c?*7uus5BnP0`}g`8n+MnSLMb;awXCKRhW`7K&6sMSl49Zo=<&XkvbVe)PYk8*V7PJ7O;pi zXzB7h!U+V5;Ea?*nq<;cou0DBik6+EyTG=w$7eXo%)a$q;hc>Z5=;{y= ztcvw>!edrb<8a7NQhJGbC!Jyg{bUd&L$8WUX52RmW<{LxR&j$7smYJIv8}M$-S|IO zCl1ip@CKT;?C$(IhT_v^*FXV{+O{T@2^zNG%Kse}wm;`JESh#MK70N9{p+7M#=ZFQ zzt=O%5|!*GiKEm&;_MJGN&ke_D{Ksm=;#YkS^Zw`^hwiG*wQWSLksg@v-+2Mz_vjE zt#N>9=R~?26;6u9&a9f&!H@Kv0-TD-=qehKw&*)BnSz3^26nl;@-G_N`L7xUDohE7 z%t%@Krj*SS5}9xni}3G*9u(JI;YCXZKVmAeM~n@Pd84?v%jyiKF74#Uc@wkC3R@7t z%QLK;YjL;noHP90JCn+<2D{n-yZGo;%|9`z{0)gu^Ztm>cJ7VRB;gj=z>UO|Ee0POG zuFtvUv@F_iK_gOYn_|HM(hd^5PDf6WtYVF>8COUkr7|)pVzD#qNr)#UP+XY(6ZWiN6qeiZEx1Mo?_H<-b z-FE}!_ib(j5KFHHY?pBfnG7k=IWtR{RKBB>xlO6$zJ&Ttz9icia;L%(c*EGF446YW zq6^Ta^wuyqqG_LyHTWKN^s0UVEnC8x`)?ql*PKK5{kmzbG_#^6KER6B96H^!57`ar znYIo`1+A8EnoCWx54&xhivd7($iVgYYpr50CdDH{ShoKc(N4nYlClAFr;@Vj9Ajt9 zn%vca8gVfgeGR$k+)W((`u1WU()qM|T64ZnuzL;`D*J5yS9rmuslo01uW@zGyp)L) z$+(f=R}*V?FTeNbH+*&wl@h;*mcV_E=c@Mtan}uc2lIcYMuf+YUfXZ)J35@hLkgv? z<{DkC=2)CX+ar?b*gNSkr9fz!+SEIld`&m1EJ#`(j$ z;5Yw*Ia#&YI(BpxSdTpr!sl(kJ-ef#nHh<^(j3v_01iez zPqvnp2roN3V_W*T+uG)r_DSr&p*t>n@bgYD{sol6nBTrV3{dhsA(!oZ#%6G7>3rQq z5c?R)>Va5Dw|6!l@E{Q#jnj(af$PYjx#QacudbaGL!P=Ps4EBfz@Y$ z&-XZL#xUwSI~76E?z22*73ICg)AAvW#_(QdhcYswun7qn*4zW%hpcv6R~~cznJB$| zJZOEcuRFD)r!n+IMPyc%h4;E)wsB&4tr)g#`O`5mz?}qq8Rw3TYEscn`<5uL6P%rv zCk(5Gsw4m8TbdXxbvD@?cwL!pXU{QRRTJN=_ATjq+6@!q^Y*MQtH_C4u7Z1_2nqp< z+y;#`-;?K%RZP)wayUz9nkN%r!J0eHImX(J--j{IhqOwI53?1E^3lI=V>ETyOmoPc@0$yDSR5 zitLD(!b<+t`+PKAfPY!$pC+|ESN;TO z(w#kvcq=Ry%d7P33Qi0^a;)53`uZB*E@YfKuSe?bUibF)?1mX$eN+NaLtv1rMNh+d zy^%&DYW^UDcc*17Lgm|AwMmLNA8#7>S_JI29`IR_{Fo3kT4TkotZDrGE)Q!W>=aqs zorg$1uOHGY{#NgU?uII!2H0~qD^7EE@=SjJ`5nYLuBzI6FtgD0+I#bCH}3=(;cZ=4_%SujEX7Ph6fNl%kKvqf3Zbn1|<%>6D3#Q>@OzD8z&Y z!=6b9vBXaJ+HER5k)MTYwH9h^S@*(X8;I+*-ZdMjvx35n5l{uDnQB(vpX^oLYF7OW z{HE2v@Sy`ePx1u2P3W#(j{<34DlV?4xUW|ogvNz{9I&!t0&de?Q1fo~4roMuD~tpx zLaU;75n5gjD8h4180U{^{1=7x(;EL?>NTJC=8*$^T|@I;ng83GF#v4?Nuw{{%;Nkc zXj82@MzfPorFs5NZSQ6}O33MI{{B8a>mR~tJ)zy`DKH`8c6TXz-^;yiWHhGGiS4@8 z$EipGBc<@cQ)OrJN&h- zmP16^3nMy1I%9o0uI5D>?uIRy(6k6__W4N!g&j7u>chpI61%grf1l`d>r?9rGegtL z1h=ZT6Xga7vY6Lxkb{IPcj6|QRQNLHo%lH_*mu3(Yjc$C7A1z&h-~9?o&@Hctp}sj zO#u`}Q(`)b(tl_Pj=?2`LZ5s`RqXI&kt^pc8q|ImsT8V=C{8PrI@A{=m$?jHr$;j> zBqS%1Cd(O0ibWxZ-9=da{Oq@SpTYLx->CzN_cxPbWq0Cn?;MAlVDO(+yvMlVEqBEw zm@u;5nvN-45?C4*mNU4!xp(UFwoIfjCfgO>eE?s76=pwj-YzzBToPCr-Q9h>KiQ`2 z@`h%OtK6Iqk6{=KPmKD>wfmU8avLgfP`}EkZUY=Yzr!%&Y`x*(u+a*d&toukByrK% z9>1(3!(%S!keXDLUIb;$2VH%^R~(1p)#GOYd^&5D!i45fWF^Q zq&`36a(Yx!F79>8Vw66j$}q$A0uC;`8h|n{wt>y$NC-qfz6b!}qt32 zhD3P(@um+ihsvc)Il7)7oRgvP-n#hS%I=g(kGXiTqw^XkrKRuV?6w~olquEh41dMU zb2za0jgV4}Tym-{iGC>uodf?HeqtKtLSa-Lk<7{pX)cKTPW&JBbz{m%3XPmKR+|`^ zqlQ?}ydEru72t~oA>HG3@$bk8x1&dbqXcs54eQcxpS?$4S{iR2GeG=g-07bb>k{A` zYeZ*rQnGFJnWyvb8O02%G$C(7HSvr@Y?!*|WT9h_01YxT%H5|ZZz32gvf^~;r9PsT z!n)iq!vbHt+LH1dn=WRInJHqm-4^uOM1#6Yg6D)TT3gxER6n|dtJonFPE0#(^kieS z7t^y0)x(vBOQEqW1dQc#vF7z4-VI~NoZ&KaY^P0X zsE=jC}qdXO%eezBJ)>Vx|^;`PPB0*mKtte5sSE`7}S)UVlWN=_P zPwIm2Is{}I4VwBghG(5jN~E&Y=Ase$1mxk;vc(c>=BZ*%`A6xJGM`LKh<2yt}K+4;B zJK13!t`ZapGVJesR44&jq)mN&Zl1Df=GcmnO#Kf9VQaK1Od& zGtKX}U4&{D&B5KcJp(JB#O&EOQY2)JG+3SwSi~rXH>D!P)9fS>rK;;cXfts7SkArP9xiEJ3^}d?3$opnUs#r2)|&6jwHXN8JC;GeWCkx5z16oVxAEO-TD6 zAYv27xG#$4Vajx$>qHC@mJIn7pu-<~=>x>b{VN{h1Kzazz1IVu3Y~zd5_u)mS&WIJSC=<(Bl>u6k=B`a z_uu<2-C7XlQ#B2_QI$akCd*ZN(s5KhL8LPI=OP!8>8kSB*R2^IJC-rGXo6N)h5n{} z)-o@Dt<=of;6G{jVnemN38f0v<>)WYHaCbsY!Qpg9ndn9;c--HLybs*lpj?atrGOB z@D!INV6fztS{pXrrIDA)4gc9iiBMoIcbqeu&c*I!Z-?k2JTGs5y^wX;F!y-vxpUdy z(>Bu^cAK!SSy^>Rmp&=Z-rPfJ%~mzS8sqFgLQLc z6cy~c=GrBAOG5yh1337qvH^z*U?Z)!le~A25$9_-6|Miq@cKlL$A3iVtb31h70e+O zsvyfk8sc507$QXTukb>lWddQSZKUzK_~(mUv`D?Eg9+GTY>Jk~NveIl%nAvgws)>M z+om*pz^;)KlhYy_%(lcS60p~zUp^-@Wp49warPXYTUl8OMeJT#OiTe6TS~45(c(3X z^w;QaN=3?hKC<_c^eZXg{w>hBUj4h{1D7MB`B(9}CN)U&A(O#(Yd)Kcz-?Y1zFx<| z^>i}u_y<78ZJ`CDpP&T&^&8{L<;Um7CJ4FcdL#nGY&QtTL^a3*(pc#?)J^V31`tf3 z^Tr?V%4Z+zYXJR*GIT&~ACYOp?$avm4myXxFMLtZJFR%>0dDNiu@~KqxJzW;p4Lr$ z^I|t$)VK&juv>_;;M)kE72E;qU~VEka>bCu7&q514|0-afmGRGvzqULsuPVu-```| z8pbNFB_f0`Ptl65y1$0QR+exH0q$VZbH$J-BP_|i&7PA07W0jjJBUKxYJGGDeTd+N z2amFM<&K3LHY?-Mui4P)+-!iK5?Al}kVmQ28vbT1ed%;wc8{8c$TSE&^&5jyMImRD zUZoyI2pvcKlxNhPIMLv++^|u%%&KV|0&3s6TWBh5teQw zljQKrV1(BCGl7Vip%dC}CAIP1m-u-mN^c+RMd?)|aw%O|H062MD_mNrep*lWFgQL^ z#M0b{xE_)bJN*96#+x)R@-}P-#7tg{1B@~TRX9$glA-sz{K28V=mH-oZtQDYaF?-~ znpZ`>UEncnofN3s2+N7!a;!F8ESkhY3t*T?05s>o zm|$e%w4uCJME__Fdp&I7tC|}Ae1;uQok4!{rzd=RxA6lJwVm`iEml3{QN?LC%|N`jIypqL@~P7muClP_+lCGU`u@s+xbW^ zEfEnUR66xy?SKUfwUFl9nNdO?bZs9Of0<;gFo7=8Cqj{>S0PEiNQ88_)r{b^H^Lv( z7?!qUSZR_A&$PiiEJ&$L(1P+9QbTvEqURKkz!hA_EXoZRE;eE5LCCi?%)4ElZYMzC zplAh3@%TUwj|f(^xk8c76@VP)`Naj#JCuRu=L!|4iHX9J-}@9vIw{ z9pmToCmTmB_Y%omgG{AH@aaDbtqy+J-Ax|pFctUxWGFbT9FX`X2ydgaPp^`|SDuck zEk&pp{3^)#KbwdD+e7>p;zd&F-M)JAkKp>>80Ejx=T~_lKX)rxRvAS|367s51^)CK zSeWwGj*vQo|B-z_`q49Ch0x?63C)fO#bQ>1`Zy9#%nhVdc``ZEnqH*rN4i$k2jdv| zYATxQ=s)s!c47ZTOh&;>i)T$sJBF3biqnFbFaesVkO!TuFqPr$YYTk6sG)Ptp?P`M zI;?C5Q^!~UQydAz?2DENJA=Bid`Iw_G%eN!H;=l6hYp@hxvxgu)!@i7F79HIWyV?C z!+tqML7^*Yv*VlQ;)s_f*KG7c3;g!M`1o&&->(J_N?owLQVkuSvYbbWI$T*!x-F^iov;EI2~@Cg zqr(^ulyeAIKj=CY`Q#nz6(|3StO;a6KRX^)nI4%lB%+CxZ{kXpJ-S;uJDJsZI zrRqx$os#P)K--Fxob{tzTRrb#r=Kqeh0_=g(arvlS4b@W!5idQAWg? z>}?60Dm5;q_?v>vhaAifE#)M%vyJW7RYzeCeL7_=@8OouAx`&pR8}cpucHpUy&7-d(Hvb`q8-$hEvuye0|hV z5NZS>Uz`*l4(n}4beg@FiVINkLaWsz)zxh_uWg)~Tnf=KjxdH-tjvr`t5S>~E%f+} zi}lJmi;dUMsc;DJDL}f`b@okjRI8Oij*_zFLdc=Jd_47jra$W2o85hPMRXG=)?%7X z){*ka>=ZWkQJ4l_WVv0QJcMokO_qQ5zjG+?ZHt)Z_29i~lYQlJx+M zjzIIIR84DCYpzqtf-q6Fv$Y}+iN55cz;FBTfcF8Us{%uQx|ruT`#vi0*jlrnF((fg z3ptKgGrZ8CwzLYr(%0UKim`A@(*5_qCIz^I)DhWXpgW&HGfkW5zc zUL?RFWO$!^L2RJA6-&k8RR%V9bFuR}`Bio}JQ+v2%-OxOg3*+KQRfWU0|%y1lOPF* z@%QIuFe2CLn=A&;EyUIhMyi{a)|7?B<-7->FCXolq32oH z+JR}EW%gS+q?~>_tAN`wB_8d08oqX;_r352ba`3@>xFijodJHf)1An(<#UL}>eAf!Y`&O?5WN+Y%>>y%w-G5~ z0#buk#m?8TXVeh0dK~8ak?a~mFfnutyybZE3yN4Uui)e+A(zTL57VfBxbH}~8_ zrwhE7|FP=nIz1+VZ}zfRkUeN|u`f=7zulfC+qTKQpz1p+&gc@@D^$E|eqb~${BCw# z=VNA$9&-g}*|iq)^)E}IO!tbr`532`j8SoM_}XO^q@z`C9O&oS(PcDpeGb@9n6@6! z@^2~)-lb!*DaeZ`I%E8Vt z$+vJww!JJB*_k_zmr54J?}C`b#ucTr)v2ngQcqFg`;TERGAAQeR(xhUW%Obh-{BZ1 zh#@aZ-mfI>b+x_uzl$Rz1m5Sv-vx6Q`C&2RN|*C6qOOjncB@~0U^ZjcGa@s^3)JX zdpJT25ezg>`KI-(Lz0z6ntkkk{?HJy8?kIi;d(xl9g!C|e?K0e^AZS6%_DQWTqa}d z;$DS&-!z<6NRj!smg)~Shc!1foNpMC=+bq>&LX$-X3~E7F+NA!FvEcIchCX_U`ecj zJshRTKug;hT34xo{BwrEp;DjSp+Ie@9Z0+;$L;Ugl=0gTKX3tL4PW25uwfoY<2~Et z?)1Oz`2h6G3_F7JL|Oa9g2>S0I^0}B3zLlxLOcCrlzeRUkXEy?oxO0*nj-#n{2flX z@pQ2?e@{O^e1GLYU}Ctp)!$`o)z|Sj>a|0BASkjR^SW=)SQKu6r5Jlpw?eLVIXdrv zU<*+!UJ?NghPFkz+T+bV*dg{SO$&{?bsUi?Ftloi42PpWQnP#QAqtsxcXeq0ZK$6Y z14l62X+>!*N&gbjOeg^|v#PxpdkrqVLh}i$HQ&<2 z5l*syOC@Xki*^FjmOW+apBDMtYHQ+2kc50}W6}ZwROm9R3|A0C6`D@*KBGrv{H|7& zQQVr!a1R8nS3AG=&Dlx5%8H=CpVobhv4ok+*)fc$^^;)-61kFqZvaeVENg?XRfjIDcNAg=~iw8pN&@!bmx z6JObHo}n<-@U1$rFObMJCBuELcrE-oW!8brq}QlxRDO`2xAj|55sRB9YGlj^6{}D( zV_|S%+_r-^WnY2VIO_|gw-xAgZ`ka^|L5Lu)Iaq`dqyOd1PcX2Rt}POoz_G*F1U4_rEG%?zw=$_? zOj3Iu6TtQY?iwKB z-MgT!?mnbKCb7&3H>eS;p)I|ak9NS(($F5h8$n`W=rp(qFef*O$Gv<^LPOw=jmIWs zv#1pF3Z*JOPz4H>?a;des(m4^Cq|pvgg$e|Z!gRIxe^uZCD_{fXjm8-Q{-UNG*>Q_ zll{`g8t;-ExpcXWi>=cNGkb+Z+0pD;?r~6q{s~}qvEC%^Vz&+<-zBFdj5GL@sP~1A zPq+F=q5o^m2olxnUStgu(JeKV&mFm+5)rFp`Y9}!QBtH8JISc^pNx81x@0L!-tMUH zSnBqfgyviHc?CU9%?$Oe!YI{0IXOcXGFaAdt`&#LGs%$nO$_ux2;N_7f(`g!zL5^x z0rG>JjoNb__RC!J*SJzXt*We_3}vaGq0-)8(6U>0E7ulu-XgpRyHkuv20)$@&9$J& zRBJgnNw=j=m?5QKhk2(fuVPVM#NS*Qn;A=0N5##kFxHo;8_K4+r`g9M<%VTRwQ{HD za(mk>e?G)eV-^=w@WE-u0(T=3^7=yle4`&N*dDoXMEWBHhX$yGs$dGkp`<}3;f=O; zY^CKv0cLaAWYkP@8>o*Z8gv^rCUJMFfLlqr4%gVzSURQ+m@lxI34o)dW&G|dh1>lt z-)k@gTcGo>^#_fySpp7|oKaItjCwkBFMX_Y37@~XI@~3k$P|3sj#KNbOa(xFz;8eZ zYyHMS5cfIt~7?V|lxEr++6|O2y4@HZiuD2OaI#&S-@~@U{u2#SPl=iXoJM@f+VcmDC z^riDgVSje3X$&=SYFvXWP`ew^I6K!uXAET|z&t=!w+@)3ICSVL1)`ChEhFcIh6I=S zwK1(uOBdOaqT-~LuBF1k#*xueWPvP=*W!V$bN-m;4Lj4`efQ#zP!)Mpaq4Q0bQZhb z%(|6cy~X8!jRBW$NXJN~d}=5|Om3_$Ep>(R+LP~^;}~7qzB$KRU!Jy?BeZFr+&IFs ztP4za8CFSeBKEhR2L2cXPEzzzlxp71nDPx=mpRN>xEdTKtY&<&NO)1V1HH>oyXP)6 zh~s9q}D;0@4F4tO^mJ}?C+i(`fxm(%XFjiu-6O3|MH2Ia5N-qu^d$AMpViDE z59PFFRXhPoY%F|zZ5raZIuS*ny);-AlJ>KU-#z zu28L)r@JeCg+hPgtz!dC{MFFPuwE5hC>Em!Z>Xet6Y1%H5Rr^*Ze#>{*CY)Suz_7f z1I3!k{hsvi)IP_YTv~UVi^&$7o@ZgE5DW$*1?%kz2TGHQyP^JVmKRw?+PVZXj6Hr0 zz(jH#$9WqnC##m5^wrZ$WGG2pOJ{*nawgig{PolTt4tF9_eF;9rA7=020wrGC2>YZV*q@k_&@oxMc#R-Cun3*L%$q?YCyDhw`Y z^Q8WVoQJV%>hodO0;{7s%F0`oVH~1IH0nU-XoRo3l;J<0^_`OITYBl7yB6Dqzv(B` zuqw6=>qbJ8!JzISNW~R!Y#H;>y{aR$FjL71t`8$ORRx=#13tRmS!?j5d`GJ z7&hXFnl5luRO4iOWKl^FE^Av2=Oxo-Z6CxOX8hpU@-MtCg(-u0ExH0y2V`6933O zWz6Ao>;C9B3!uzHo4H6WO?j{HdL`RG#cm-=4_cMBV#0A{bilfFdx)57n95t;xcAfj zSnH_##yyFOoDJR7VcvjeM2aX4nd}p{E^1gIhL|JeS?w*@L)` z_32WMrf=FWHHj3Xtbm!3zkO_#N@zJ!36;I&X#(;muOeipzU)+j!T+7#vP#H4T~WkI+xAIk-^o}Mkc+*b;;+=vNlLg zua4>i64JTF+VnF`Cx%6w4~jD1ZNo5Day6m@zVR$ga90Pc$0u@vZL^9N|_=I3{!glyk;@vG&x$F%iXeBs_~;V?xU1@uvR2cwUw zY>L}Z2qOzHttYxMqY{I`%28g>o_eG>C>S$31qWYyxcm%6j>)n$_6MYqtR(>RGXpu0 zcfW1z8NZZ|W~UKifK2>hq3U&4NMNC1RtOiWh=iw$1e2p|%U3|MRx=`A|C|bq;y%;> z%zP~VQ=}fz!&j%`JQT$O!iGOkD<;P-k*IxN4T!>?7$tD`R|?SB*Dnh_8U_w{hq{b! z@Q|ZcC+gjwU})5GsKE-pprg*FZZx-j`rSx-SH+(6CtO2e^|9w1GrDj_Pqq_`gg)%H zme&0CcOBW?wv(yZjTOEQDb}iY{ZAJp%uH1mUC15l-$C=k?GFQGLrRR)z%6Id?F@ft zdqyxRo;S;=L}OmX;Q%Yc^b6P!FxbUKaKsT=*gecZ3y1^@$g(7**2h!v$M?RLCMl` z!t44W9HC&`8X=Mq@+4XMf&6l`cm2Q`)T`6vyqeJLl>UPX$$)~PXX$I$Fdbxll%-C+ z(&x-H=JN(4Gk zi)c$pmZ*~oGctH;me}S?4>GC3=LSr7nURm)U*js7pxW|2ZLCfcW=VNEZG2fPRNma?|F7U8KtD?C#4B7us5PS&zI@U zscWBnRR>|UmCNXZ3MCCSH5^g_bNKjkRLq>3UkC;^^Z^iErX(P3KSvZaU>WI?CS!I= z6sHzQ3DP4GCMipSfBtr&uhe)mNpH>W`WibcEdkGY z;Kt|XXg;KOf$r_c5eUezF~-iZv!x3or-v5WUp8_)^%PKS7_eHkAml(y5bnnOv3Spp zgqMkVw1n;>acBTq9Mq@3bQQS?B?m)gyrAN01KKdPeqhnJIBEgJlY?eQYrk$vbmj`g_Wn4OVR_2b9coX!@hOL%T?;uaQxb%4jHFhXgVPPU5r%ZP2P0kh#OkGBbpEx>6L|h)xVa_sP@``=U$d`C$N>m;?Cf$tk zkLysRVb-TuqezTHx27-pbwb|qwpq1`&spksmkV3PxScAhDO_HWu5Zk3%cMgN)iGI))n`8{ zDv)J5+@Ic*g_d|(BPI88OU66u1ys52UG`nbBuukw4g0mk+RQ z9VhE%O=PGeOmZqRo`L-tWCzwii_x8X-(+EumNd%^7I}VK>1PuPGc+I(D*n+raO+gu zT=v=_J21y1t-D^s6>G3|3#aJ3MJx42U0mo)+KqQupSb!mV9f`B`w8=_xcdGh6@S_y zbB15lmf;%v@yV(=B4}}at0uz!e$HIQ_}InGr!pB+ zW&C0Xs$eXR7-&cGTle5LaV)o#OU|H6{;z(R;rsP4iq_vD?WYqmUj88Z-5u4ZQ?l~4svM>+@1?=wb3l~(X^f_9;B#fTbp*4mhOT*vt~s_4ClgDjA`@6bT1aP@Yv&L zU3`j?9IN6;56X9i$1&UkUsqjQ!**{UP>jW#Zv7l_B ziX5qWY6m+nb4ZkrWtoi{v4F@5ys67d*5Mj^0;*tb@yE=3!nU|`wx^#ClU>yp?7h(2 z+$;>X?(g%qw!5Ek5?)=<=?&|$GbV+`oNVRn%Zg>(MsL!2HMgbL&SzY{3PbBR|7J=X zR_5zeE)GyJC~7BW=m2y|Bn{-Oycp;80bJa}3`05qTJ(rmUedjbv-K#6muHCW>mWtM zsxjHls`%1a^9|rQTx{x!Q9Zt_GAJim{8N}nL}kpZ$Q-#(Rn71D`Gpu z)KR{=KR=%BFKl1dDDATlLDmla{#DH3H5loOi$Gjb0ckiB69QOKP^_h_9h^N!AH80z z5#NI6zc+aqBSihUjdC->BmgYlN$$7v(t$vY^n3c`5G&DnrmMNNrm1b?zBdKF- z2A&wifH*CJPgz4XUvrDU@OFk~E7AH8(c+e9%cF&F``G=MdgYUusp#0!23sUk!!4$B zYc}}3m~o<+;yp4DQ$M@EuooI@!!ARF)_YM9`oq6RNf3Ken=`*`XKWBU&YPh6klTf- zt2C|81evhJ{=qbyp5L7_O23$XjWK-9(G8a@DN^ac;+$?I5dZyL4 zPyR{u71i++bmVRH*jH*G4$V;oBewa@E>dD{`9D26PPha7S8c1U4D3x;98$h&l0meu z4z4_O56Z@>|0L>1>sNLv!gozeBX)1mBA*9hrL@ON2M*G08L(gBr>Pk7iCtfZ2TH79abN%4%da#kEik@>gdmR=0>OMi=LurOOVS6A{7sSB1zc*8LpP7gl3ge?30p z{N`vaP8|y-edPIHQ!(c$zxJ{CrgVPg7k8w@6kaPL#9Nk~2dZ%z7utKWAS{*`H0<*RaH`h=MfR3ICT^YoN?gRUahik4fZf>YORGA+gh*jU8f}-MUM}!sl;FPDa z^~veZkz#I9#L&U};=zWR1l_Le!%>73?~{k$d-mImFj6<#FLsJ%*yQ;ktoCy+)Ukz2fVsi(H*WbNCYfD^6EK|*`xDcggLbL4b zx0uh{--}k;kIDFBf+KhSB^n?r5ugdB|JS3=MF)RqH@uWusM`A%XFm+9jwN`|bEvO6 zhAJ=sH|o$_|5^GC=ZGXHEv@Ef++Z%DxCsd7((RhtlkP|8lS0sIlkLm*yq@4-R|w2} zF!Co23%2*LP@tf@IKQ}0V%F;K7-uo#!MQGt7IxOP+klGu!OVViUA{TEU=PMLcqkKI zBO`L>qsqp=r2Z5@7eb<}?@?m$11GUxPn|&|`4h0`UfG?HLb&(dNs;t7snRxoh`wRt zCvgb9YdKRwMI)^t-ev%FpVAOSu1u8FbK7%f@o9d`LX#Ma4q9hRy~%i$@ROG{!<~2E zkf-k)V9qpfWP7A8?Oww4V;X|>G-67c=a;+(k0TIE`a^C>JiW~&t5{FOH1^q5qMHE3 zMz-Jmmlg(ng&uVm>>j41qKxWNGyC2Ua|i4F1~V?Co5qub2wE8SbB2gl4dpXP^{T~O zDpbrWuC-15`hp!Y`zZrSowO^r;ZI{|rD4oJl%RsSN?LY~bkd-p;gFEN%iyq%UZ1@e zNToqXDz7Ac1-XghMD+Cskwy)sr1lrappzDFJXHT9AMdKIvQjDe7$rKGc=Xb@&ry)7 znaafBO!hO#O@}?}ttdHLH7d0j$9KdvCw9Fh$n;a0gqd^|DkT#~?9XenN+5|m*yU3` zrMk$u#}{vLve4B4u`lz!C*WbEI#kePVb>*P^BbRps27_zsQ3}JU;S_WOj%JW^b%G> zHV|_Gm428}oPCD0;a$SIP#4z^`AOJnx%Sy0d7;f@B}MsYp`p9N7VF|9uS*|=tDF%fwr5AwHkBX~%ECjYdB?0Rw@rl??m zt>h!k<#V{nhz_888T#_~r6PlQOs0uNHugGlPxT9A{u&4f=n}^%u4o-Nbv-fs{3ltX z%#fn?SYcAP&ZXP@Lk&tnv9!vd)ZvgGJ|jdr@a%pQ;U@3-*+*$1*@i8FN}Mh> z>~@uj)>a;47seM<-GodMX~OJAYbICsMX13w#Uku8(cXBDH>-K~GP9n`oJJYi_Hsg{ zSw^DI+H`*C|1fqIL2rQ>!CyY5i#-M@PxF$XgO?09p4-v5l#SZl*?rH&G{d zjvKlv_ypZl-KC?2Z6s7tvuwzO4UXRk$o;06sBzvcM5{X@f~spuwIVStSTCP=KmK&h z9Tt6)Sp%>r>q=3-lQVSCj0m94HYgK{Ya=NM@N@Ivcx9X>Z6n~YN}R19H~+0O!0HCf zuCh?Db6qZB#qJcNBN+?W3nAdj&hMvew2F)DSwK4GgbW)ijuz0BzfV-GzzAknWy?7X4K7QGs#?ewftk0zweW%@(aoQ==F@{kiv`;>MFw^ zJ4#q~U!ydJiV>C)u}4E!KL}C2Au>x`0K$oFmnv%7A7+!1p-|#Pr;}Y$Z9G?*++i03 zXSpg;V zhc=yBWhDpvy#3M4T#owMxBdxX?J6EJ-&h;f zAgyU5XV}q!{NQ+wv_|trAvaF`9sqw!=~XN?D(?0UA4@o{IqcMcP9q(G1d!gx{)9}c z962c%)sj<;i4w`g{qd)^qoT|inn8>=uUyNLCrzcCh4+~^nqL_ zjjB!_`-&scFHdg!s+3Wvg(h)Wi$*nvbjj$S1AGC?D)R+dI<_unWoC%I87V81oX zq*m?upf9^`bu@m`J&`PDd@SM(Pspf4ZqSdj1t5=`yEMZ0c;#Mb^WilabmN|&a-MT5ghab8{tLuoq82Z;{U4~r(9IY>}JJ*~X|19jTpH4__z#!E|5yKa^jxk6YKg&}+MHioIkDFcM6*If};&J}X{+>LGq^!az2XcBeybRb~;FqXv zMNQTn8C!~(KP}brPs3YO%Wx{J_{Ex9$-+=Wr)}AbIKxy`SO5`gJIs{CH{YH`%3(?t zEK$qX(nLt5Rf>vIRMTCbQKR3pu)LOsJa96FmTEDt3-#U1f-N4oDtxO15@j1}GQoI%c;_Q{ACrC$ss_<6&_6<2{o0 zQ-7?y|Hayk|1(@t#P^>NTVFt2-gGRkC1{D8v;S!JPv%-rZh(5SzDP$jn_=&`h6fjG z>r}L?|8K#|j&8^I4}e@91xIik@9&9PQi_eSy2gp3Nf-MS&n{4xjqT}Y&nepXC?~aK z{0fH0wjpba?K7$yk%|XHg|%iUx46Uc=Ls2G%wnt)_-wgxQeFDwzBL}$D)rN=Ujr0z zJSmOB`^CM~2|#=bvukgM(d6erF_Buaw7WK~V}G;&G5p$ld`tSF4rhNpHsSW@WW+pA%R4{kV(q387gJnJF42y~zc_4p&RmU3*kx zo8sfr<*LSLEw+4)!Qz)j_B2>51FUL#Oz|)}rlSQvlD2MmZM4h;3o|Q}BJ$uOGh;XQ z#?;b5AR*>Cc;PLqjyefSX7F}nsGxh&8Sd8loNU#?9~HhTp|!KJVs#vOD* zS>_K`MD}hs%07Fyba;3R+okNPNzqJ3?NLNRy)9 zGvuxA8@``N-NVtNU9w8B$GfGZJMLE*+Z;A%7WQ!49HAv`n;i49G2w>6sMVLn4~9at z`+StkPz7Bix^ zZt3SGAm@m`vS_xTA3x9U!7x2OdRtqQzTod9oR>kvzv$oe`fuayT2`*_%bLUK$yy>5 z+&AsBJkFYv7gn{Te3?sY8-tMsT;t0g`WMa4wS9310w>FQR^^fggO*+_!K}h~PXIYi zZvD)8mzxc@r-NwSRsZ@AA|w0zlg*C@?blD~R#lIqKB&zTwo(QFrFff8Av<$rZ64v) zwtxTS0viZ2y&It)7UgNm()%3hw>oB_>E${8H^HR6zO0dx4+pM|pwUnagvndmj*jV( zD{>YmhndUtWX+eokf^@gS+|E*VNrTxsCO+ZtM1()8yUnj z-S&SB2H>ukk9G)hB0zwg_Fi6 zMt;=8VOgEv%5a2$iJW7*?U^C`ItQ|?F&#__r}OCHvTLI4{{^Pxt+d$Evx_&I6 zSRbI+-PjdHUK@v;oTpo!(5ia6!x*YTpwTd_Klms14k$p~aKk z**9L@Z^y0jb=$6}dDAls?Cdf0t%pA$!aR6sMRH?9RduE-GU1SQUBXQ1?PFYGoTjHn z?FmYGMnwQ+`>K#DPIDz}VvAq`rFWyu!mBlLzsi;u=#XRW{W`XTaNdh!#5X-@s)}+-XfeA>xbH zDOQ;(Rh?F=`<8ALv{sIq9=t`|9bwV~=9nL@5S!#pycv%m9nd!Pl&DYtp)P{YWrRGV zwq<1_%ZdEXW1*zDy&@zD@*gL4(`Xdy7ty+R(projj6UP@DXy9jh=?XIAPc3z0DxCnM{Iy0)Djk)Te&Am-qg!M|rkrWX7v+^w0L^IU&)45+mIKmCP7z zKin5%J-Cmb2vQ89el1&42G;jwJxKhq>rxI`I3IW3RgBPjTl(dS4acNvD`crzQhltY zDB<~5hxjImAzF^g+=6t%;>n&f!b&4$dvs(tDJzs-SxVdnqsN!X2a9p3303ve(_@DC zV^3`McZOi2)~mbxuE*gE@TF^E!;OY#n&jnTbLor3X%JhS#ZC5!rQv0n%bF(O{egfR z=MszjPW0G^zYAo;^}fwOZJfzgRXnpO=B^oWV1?p#ahLzPyOqn7%CGY=e^0#9%Wn=S zM(CqYbqR0QA69LXP)_HQw>;k50l|#Anphv0(90Jes#?iE>$(iM-DfhgmK()CQT&FN zFIzt4lMjxe(=D6=v65Yr9$(9`myN2>?IN$y$kn)T1j&A=mB(+(R+RJRji!h#_yV9X z@I{W=rBZ`%xth&ZDvT8gv8F>BxGTZ7ijK&fCKume#WFhi647NSt(WQKipVRqQruVD zxWVep0;seh%~uA`9PO%S#R z=VIfdxyx;oZ?`kMMXaBB^y02Gxq*4~^wcKz_bDq>G*|s5{)D&pX_Vi8`JJfU{*4d9 z-4(}+X@2m*TlS@SaHQPq5C-3ikb)z6F;2b(7-^L)r4nK7-PQb7@Er{YRyID1OI0Is zbi_yqBCQJXkr{y;rKzG2EFXp5J9bLdUP#G@8F*zPbSJ^Ulow?=it~OqTp|gFkTR%X zCfH1c2D**A!{3ChIwVzq5x*sN2Jrq)>E9+ZGLN~g|7#-F>)KWJgWoQrJ)4qwKBw+~ zzkAG-_Y~!YHm*zD43SEup{(|<&L{_X0$(EmNBJm+zws$3dfmcvG;D^!6@jt z9zFd;>OrAk+kwZ2-=6|m{SWr4&;r3{jBuX1Z)7-7W1Iir5btAkHRw96sgFKdR)h=y z%GKq@Ni?CjZ|VWKa369jWsJI7l>lgcG>ePc=CPs^y_neEd-lG!En3!3WVoLGFOP$O zLoa2_!VZHiv-pZeLWL9?PAgA^1bN}b4N2^@r!Q=C`K`*eRBNIM=KpxGzdD`Go_OzGX+oaElkh&vs7?{j zXxG!~#^iSm<#+G|h1BayU(WDg%S<9I=-ol&^7Ozl;pF-r(QA&=dM|HCL^I_&dRqRp z@dO=Y9in#DjKg0HSjjUH`ne;o(c+yuS1JPw!^uQBU!`P(RP7)yV&W>0;YMGZcgl}T zPg)?7$xd|T*IQ6x2 z3c5STTU_tXLwrDV8>ap?<3>BRPA1Z@?u)-hdEPCW@L@}kMU&CAKAH}|9w8ZDW44@S zJ+S!vj-Ba}qmM=BG3A3hXtO;E8XfGjiN&!nz+);R@~*%;%n1Xt-fBzyeY?4f(`QtF z=0LByy+$4)Q?UID{+elq?`7T>Dlr`P{oQEcl~_SK1LBnna+g>YxU|EHgb*k1ktslr*8%l<`Lu0VXp>1$|{%IYOUC6QS!l;`8rw z`O@SD&{xb_lP9yk3})M-dMA@j(hCW=r2XGOD1Ah-JGo`%a6+{VKqPkW=kW%;#~Eju zdOs?{u{c~my{ZuhNyl~d37v18>EKR(fmGN<8{XAPF0KD}1vsmNKys8bM%K>JNW57S zccR-J5WLQ^6D)$Io;BN{mOjKGO?MHGe_hQ&9N5|!Md74zV`{)#-?r;g%aOjbuaMV> zcYPKFSU+RL`s0M+=gxV*Vty%yx_E**Ez%QWmS(EdIR@M}^JG#!=+J~Sc|c8-G0e2G zp&vakNHi)3Cgo`_H?;!j{@8bd_eV`Qnf@!iOa)(lt+7Z9sl_l^R)2qc1nc0n-Yo#Z ze{klb`|^ZOSb*0w2CUSz;7dH)KBc4tKDU2~b5meW*go>{MJb9rso2J6%a%;(dLbeX zsiaLuK6bz0ot6kIwkcq)1qO}}hLwx1Q1nDWMG&xvKl~l91bc zPF%+w5fhp;P))fiMjG3zaPimRQ`zZP~4zc(?Wl68Sv* z-d=A+R0;cgKX1I~b6gQt)7>IJ$M-(3__fK~L6{X@;Tu_?0%4;Voen(#LuctPs01ka zM!4fY1tn{`)gd{8k}*0o=SB?Md2ARFC$yF#6h9^}`ruDLoV_CLB$;)+l_NT&N!dQ( z?u10RKwsZB8`$8?pIvPG<;Zo(puu(nZ=X8m?P<3mWXR7{q9z7w2l44;vTZa5k^v<~ngvD>U;U}3^xW>&1&%DV*M*Qh&(_eDXm^v=84 z{Ov!!XVXI*n40Vux9h>!f8?NSSuY2cs{dGEuc;pp2~b2AZib^@xmScCAt}Y9)20C4 zmqjD7|5+ejIs5m$8-1aB&FSG^^z-+FgnzSt`;Zr!m%}S-j=$Dl3|5?o)!RtxE=Q@& zQw6~R8V)Ip*(!{n1iVF6H9h+GQ+mI7x9l@Y#5R;8E#F0(rN}9gAlvXj_6TLis=w9R zN|qi$^;eX|PuN)}-?2=*-ufUB)jYg6`{?tx)G8x)LsqsleeBrri0BE?^V&71q--T3 zW*$4$oJKo`NxMU(>V$#q;R~BxQAJIjt4H*q;WZO6ZJU6mCP@^aUPqY(-bHC^U|>pS z7&F9*rfHzTkfoy4u0~VGn8FtYY?J>AeNJN}2GQHtk(JI12DRI~p((!o2GLdC#Hds` zO3@B67$i zMstsundO#gZjQ#6#=N6ro4EJXgM#%!UqFyoMYzcCtZTW)_myy6a zeg2`BM}GA;*7_Y9*KeL5?Eyck)CkUa48WdeAGG7ocLw5Ez&;k31YVO|BK+dbt@(|A z6-n2c(`(g1OZ;4H``l4lJIUqI0`jQAVh=ZKIJW{_%Y41L(Sn{g$4_Sdf3KMAfA`>& zm*bQ-5JmSQw>Jh^O`fHGEswp&_z3bPav&?J_reXYL=LZeU*8F> zys)8*a*wY6@17RFx0glIaI%JtQ;0cN$<#W_;Qsw+Qz$*&X>Z;t{xbPOe?K?okwhWM%bZo&Ne{5ZN1M zbLaB&RALw99f>7~znb?W9t&qe|gB&zh_qI$U;ySG^v;e`E}bUf&U z-RO6AWe554J(IFX3y>_IHqMlBbDdWn7#qcRXg>y3=lvbhlFbv@G%R1HYz)5h4Phg+ zD|PKjMkhmCA|`C=UVdA8Ij78jZRJ?rwoq3_GSDKRHsnC!Ff7)5^s9^GXwL5IZ9rH* z-`xiy{9Cf#%zkb42ksfymBvQ4;nNYXp$V?3F|K=xqa$U<>Sx>U`)Th31=+`~c9i(b zw%B3;fm0THct*0y@u6%|WZ>zoZ9i%)er?zUOv+n|l)`@BG&>u?;VdV^VdpNHr1R-v z@#(k~ICRT%tEKz&_lc6e!Z$k3tl@aHu`*ZuPQ>D(p(MclKcpmc2f$KfcFUUKe&pH5UiJ zZ0@=A25JxH=S^BYv4l@Ypb0|*-C89tK3yypxiJeVwIqPVs0$;Wyh4JWPffE(+MuL-wBTSlQJ^k%d3o91^m{d? zN~yV3a#*IX@H{6^w?0pfZA;Uv7R<6**Ho0GErVwNSKDvf+frMU8z!2z_9P+1BgVaw zlC-Ao6{^v$NlkeV6TBgR^a)MhaZ^PQvB5a^62~ZaMH9egjxeLbWu~^eP`VP5Y9!VT z&f%#2C~nK)0TuA{w$~@Gv?`xfvgk_sIfosUEKd_QAp5pY6O#MSIXe5o!Sxpb!i&t( zep{4lFR}X7#F1-<;rNDU%5_+GQXUGeLl~ek=65}P?x|ZA7k%{-NmF5um-dpYWz zkJL!xt>CFLf`{;5!zW88td>&@r`82Y&1agVb_=K*D%ar?^JrR3)_@c)^(u2M7T;Jb zbrT|>%d$5tWn7yi1D|)PdO=mY>|3INn5Wo#GJGcKp_NMJimzz~a=L~XN*Rb0?eI=R!m4o^kqw~jRa>?^VUyUxK}VV69aiZ9#QbJl?6-qnt8 zHZQPIRKcaoCxIhz7QT4rR%G@w`D`%fG6YJ>(3Yw_orRl%OuXi z6+nJ`?VgZQ`W*#4V}9$KhoqST)l*&Te9XZc2EPIW@CB=*y*o=276qan8!CS&XGI^4 zj+W6d#2rV_ux83XP0%5*wWe~g+Lss^inUI~3Qvph zqon-7>X@1chFZECgx3OrIIm@oDGyoP?w2Q#5e_2Z>8j+9PuyF>@rI`JNujV@MExoj zb0Z%iX?I!w)r7&DHg~1$W`5mVC|g(4$X&|DHEG>HN&kTd&Ho|b*R19+^IKGT=Rp{0t4qaRn4-9vp$CA z0J)sR=}0V`hKDBfSF3D^q^11k*rkWfE>m4G*U9wf%Dnm1F6FI_0*4 z?_ur1lg_ikHqmhCKOX!~f{L*IWbF_R*>N5b&Hv2uhDb-C<2{ZbuRkt62jxilIJ4baEXQ3;)_H{6hGz>z~qJ ziw(K;GkMc;Mnp3$fi(-NFq*QY2Hu>P3h$4&jNk61q;$SC<)q1We&zvqD<@!jG+eInVYW!!W()Ick_{p2vT{c9?qqwKa-H;h)Q z-+fE@BtMGET9$C4^Tx}G=rie`LR3zStoyA-av=| zhWZE=%`uCkof`_@nuzQt#EWI+lmj3wr)A2`Tz@e+aTy3mavp*<)zSosr%o#{{LEy= zJ-JUUH=r0RyCyYkKm}^iHG+r+%eHabs?Fch%-eD?CViCIe7VT(7LWoAWV2|_Eb3I3 z93CW<{3ba7)Gi)#FS0u=l4Fp+UitGwou%KroF~!3Yz_|Kls)1&{@F{kEe?qSbF+|sq1oSq5T=E=^)SU^oV(E@ zV!TP5R*Oc^D3TS5n%-nQ?Ru_5Jn}ja=3i?4dTt0G__NS(+4z-Q4{MO@p*~&bArDPq zZyhR<5ao0pwECn$6OA9<`jfo!NA8|LTo7E-E?3)?fM^Z(~_N zpw|av-8Vxr*G}fMh)Ra)uku%x@v@RnPZ2(ULb1Qxf6zAk?|R9aH!46f@zhU>6I#e9 z!76Wl_gmxKh*U;Hj=X0(pto9VxDX#9pCW$?W+nAx9G#kc=hHG~wzR4b@mCjEcu~2g zDvCso*pY246C{uM>=uIy{6?yW^^aO?At9Xz(ECS@rk+yJl*b}6F$9$)!jM8CreP0> zLJvkA|Aced;(b5%xv?JKwU#H`iw|;jwQn3Kk~ZulfOl)Ye*IKW=jPK+nVHza4{tqr zf^x8x3+AsP1?qcmZi@#n7PN+ox{nU=JH% zt7b&jE_p^GPXm@&W=jW%&aBqll$|tRuflqItj)PiXil0aLrEO8iUv3Q6viN9X|m@P zY$2`YyNZzp_h~)<9W9T^+ZJ0r0&?%|yNuQC8hbE0TvIg;S7ywm%GCHwE~U(P{E?{h zYn2A0GVY$%%(K(nADu^WW6a^*3}tvPR*erPrLH~^SVyqwlFBG?$BJwA@ zxqSMwAO1Bwq)oe!Ew8uRhvS5sStdZ4TPr|oYVx+9oAuP9Gc$>pN0Tx$DI+P{1~(xl zmiy-XTsT>o=1DqzUimvd`O02B7tITAX&=|xR_$E%a;5n?gKp3H#J@d!(y0DGgQ_j) z`<@)ypWa}}NrY4_rGwDMS-N``4~|Jp{mFnkH{I+lDai<~S7fD}+T_;~iK|PJvGb5G zymYoi(X-RmpFaN$9!+hIgsu_wERn@7)v{CYHK7M_!c~^d2A7SnN2ZCths_A@`myI= zB)8}MBS^Nq{IW=8H?98OX<{F~qE!Go7f;MjKcy5HG8N*e*O6#!$=^DY0+moGdm%O# zFU9ga<#CsGnBEzN=`P5Y6eBIJIRnkF-6?6c!R7$Ul5zw3`)}`etJZI6(yxhZb(Wxj zcRKGUfC}2@(7Z~+d)7tu_x@3QJ=GAAac7Nhei+(}KXzab7_)fJdAlf=N}YYrqF;Ne zbD$Vqhp~+u^>Dx3YplB@JmAH9 zt1Z&BUBI{o6#`n*Dy{y^QRt5wk&ga1>22vp;~Wk`;SyHwfN}+gzV~$0$D6!8;o%?0 z?J|J12o7fOg5n2Pom0yuq99usjD55}PPBD1@e&3n)-%Vi#`ak$Nceo0JAU&-9>Hbb z!mMMhtc>Fw^V;TsojkgoKE|)V@3haZ?wX;!Ooj+fX>At~c-?kGTXoK58`xEGubflU z(j&_2cq{eq@bD&s`4|c$Y%c!YX;i#>Umk5Qk;WGh0DgkMTP7)?NYt*;lFrC)@yaFP zIzVFgQ{DXj7sr*>KvsJu)&2in{%stg=v<%}6#kREHDVe0$NH-L^X}(QF62eLqFKDp z#984=+0m?!u=ND#2+Dk8aSXlST=oFov_mTQu>XVtnl6!Bwpb~4o*VQPruRCYEVj<` zBN-dRm_gmdV+*7p>6TJGbVb|Nl;kW8MI&*x;l=uc%`TQ2^4u?g#w?3*6 zgafEW?k>Tt3iaJ-Xsx;BLUNjxxSkXX;}M>1$6Cp)93FeQimPqt@e!-ySPFZ6TZ?U~ z+ALsn!lt05AT-MLsJKS=T1$>;x2qvCY1=Xig`|<7Jt;+1T0`Q!Z@~L?0m1cW(x24V zpHL>DMoz=hOxMV;{>22zA0nu+lqA)ymz+~9#aXu{oHJ@~V4AsvJOG$B)wB)2V*L)c z-UnYDBN7>rlc1CaiihLGLbawZ6U7ssvTHhn1JfK+0WVvmB`52a{WqjBR!L9aEw!)p zoa6#9oK8t--cvJ7U6k-}!Lg7;2N>5g^aY_1srv-QuxYPPBzfWf%G*X~0iB<<0#qjR z488>_rK(Kq-CrM9wnW!Rw3RN;1MuYXEuQW)WCU9!XX57=M{0_iYI0|i=w_0}D#`WZ zYfGX#M!>L_a*br>PV79sS-K_}#xmyeth8%^=i}p}YNx{5ved9`&!J&@erIDOakAiD zT1^y9)h{jV%C6W^3<|ZS<<;47W#m~flFEsCYQ9Pd zL`kiK1=U0~rOZPMD@6)29)l|Sj`H)Bp}v3j>=#0QIkDoeHDtub>RxOQ6l;*Owz`3&SbH z{9@#t-_SFEgA2OVy~9=^62{0Y!^+<4yl{`ZMmxLK%8-OSiTHeM%{gcSP6nE56!NsB z-w5;wq9&oYPI@}W&h%K|X|zhdTw9o^Gsx~ZI1M}(^h>~z_H=cI(fGC1Ssa8Rd&2I* z=Bd$8CIiR}&|2zJ$M?r!fBam2?`SOT z#)qWFCVYnZ=I60-Y zA!Vr5d#I3DQ;CwTU{tTlrjvsN0(cxW*y zhR(NWYurFGS^O_ozuhZ%Hk<9dV-xZH@%`T&~b~zoAcT;gtxgN;dvmq6I{;k7j zYi{HvJp3n%pL3~yy`OhI&=e=#`)9r(2(}fc^n49?Dr%3YJ~CKFNx_4m-y zt{Q>HL!YU7PpdW;MFdH!f)9Q_d71$q(o)@6Cx_bOJz(eeRNs3WLLYefuB3A3E*Qeg zr5+zxb&;ZmnF?bw5rviwKjqVM-KpY=uG(!4Kj3uSI^Y`R%UZNR!dQfYEd4%apP)#T ztJ#c9nCic2WOaDs{eOl_8e?HmraUxLUUp_ah0|hA8sI}Q;N&XTNNK#=(-9uRKmXN{ z4Y=gZ__KT4Lb-Z&-q<}SiIe@LMSvzsc$Rtxe~P@gB}VC}r|m4R6Y3Lq(Fh6)o`3N! z2#V)hXs$C{P>{vzvG6#xcQO_C;}P_=dwkU4x*$C=S9B=71P!cLndXr)o49ErDoV;l zEV;UxHIFn{&Z_GvDm!w#K1sG5q)sjVmeO?LNzTnBJ+`rIDU?Nz5Ab&*s22jK#k1M( zjC>_H;ETW7?a7vn!53*pc{;SN9$x|W`Ua4I1giO4J9Dk#qR2+ucaF@5oHReIbRR#h zyzzZLx1MBWFRib9Gm%2B+$WteYl@6l`bI)1{!O3mghcMBmifzI&R1nAfsGAynDPUU zTSIwF?pmuo!>AdRX!P?f+O?TP;GNIyvRmVDxoUQ*qK)3Y#f1}ALRDSkgR~Ga7 z+nsS`{|TUS5!Eo5YfD$6v>h|SEagFn9-XDQrIu#VGG%}@cvltnefxaHuTkFY*svId zuA3iUr0-> zGCWY4PrLkyy?;;3L_yB&(!d)er;aus*$D38iT7&TTHk1MV7O(X8wHCh%z&)#0Bz{S|nJ=exVe~Te>t?D3m>Hb;%f1kHCl)ua2ct zuoEM&{Z`Fq#;!A;a7)|Nw>z|lMUh$;Ms$xFH4KAEbPP#|C1e7&-hiWFJwVGi0uXRH z2a@Iry-7=LN15>k@I~tNM5+aRP{e1#o7S2c*xoy}>K|VF)gWxRpe-W3!bQj?S3XWG zZ|RNJDOH(G#hG+Bos?MY( z{^yVZgKsu9K}K7TIoHO;zKQlG(BXafteT9*uWyueRKbdnPteezgtF*DD&EMUmJdM~xPN&FVaqc#GgRX#mb(qj?LUhHQiYm&f9@D`+OxD?pG(l$ zxz*A?hdI&o*ZFdje>8oe=0N-u|4cX^Y^<-s-`|_w?^D<-h4xoV>~;JD zk`#7XB-NC(a)Hr@Z&CD|`Rr8UF^~|+tv!4({fHp=BflIKPDPZWh2l3NoT5qeQQh5e zdXrfwHVJcpHTEdy(xFmqnIe3#bjaQlPqTqe@i=UGna%G`I2Il4H=v`t@+S^UXpa5Z zj!di~`e1kIm-OO23wyR2b8taYY^n$ML9}CuWn#%Y>WRjfA?T%wm{4gQF((50Z3&$j z);faL(I@x$BCk{+2gI$2KiI6)1#n4iQAu!sEzXE>Nd>1(IE`RvlJLSK1KZS*v`^d_ zFJois{X{!OjowU+GhJU^`f4OswKT)YJEzgm)|S=kK}+huvhOWVD}1yp;X}yb%jlK^ z8DIIYI1pGjHQ_t_k<-*tEv=vJoV!VpJS8DGpuxJO3W*PKHKjJT0M2|eBAn2% z`DvylYLSPmI5hIjt-@Wy=y#F)OwNR0!ajF`tRwG`-wtwi8?ISXjtcUVq@QB47-~YsL{nX% z+YAne;38Qx*)KqdT+*TE54VV8gUL;jxPEnci68iG#vNUrt{&4RNRpd90~G%>gC6T< zus4avs-S_^T2HE2$x}rXe5_!}19|LO+k1H`B<~HZ$^9-mKQ;$yefd+$%i6OF$yd6awwKlV zhF9(fvr!z~^i~Hto!OdxR|E{hVrsC6%ATJa%ct`5m03-WQxHhI)7n33U#ZNx@^fX2 zzE#^s50zqz#trIKZ zXE(ZlIQ99A{`tH(4B1_8J1Tx$zK=Jh^`p}uq9o+jYC6Jn+x+SOCjz6!Y5V{hp&QdhFfzh;vXqcEW!xs=r@FH>WZlA7e)H42Z9HCE9zo;t+F)g`N<+>APMTZ%a(H+0 zoscfpKxIxUH=>^kbrUA2No}uPdY8*F(KB5DhspvNXqe*jhrR5uhBJ)ia!@bbcdd71v;QPUVUYx;?D6dLMZOJ9z%R)OL|zqXd`(b(%Q)z!>3 zANw(vYhjOR}pJdBoLatJ8Szr%FzKsO7_Xun;=l8GyXF)CU!RC zHjH39b_d|WZwx-^Zi$5yGo7QZ>hNr2LYv7tx6<}(tyg6lgWA_SL+mVph99>W3-}Rl zU4x5J%GAHA@iCY03(rOjFV%BQ^DtIm{za%g7WJ7VZ_6iL zT+Z-fgr_<83X3F-@!l2AyiBr>_#lqOU*u9Vob!QT!os$CdD@q>M@ZJa?o=R>#EV zcisJ@M35x;z)cP({235|c}Fki&Nx1g-e)1N1GWa{$!j(G*NqtNE4;_4Ec7j(Fyoy3 z6<$nyufac^*^`ru*K1032l#b{xw7-PlJ;qxP=0^!H5S~_ngb`KR`MF}$KM&>@rxDe zn~$c~_PZKwGiGi3Q~6~sTyMa~Mv-BaWbhdc;pijZ`WhAl)nR=#`(z@>-e}qHMRV#* z0*tvP;PsKpe~FmQjzjb(a&;JQZauMxmyn)#{o%uC(dTm}&c>CpEgi!jr)+gifB*Ao z6G_5x`S#MQfmDknlv%nb(U!;8#pd_x)tV-XO-uUvtK{e58y+D&qH$CMf!_6kz2UXL zFJ@k!;`u@oxAqjlIpQFcX5d`LM8G@|r%KUWUoGt=TKN;c+B2`?lUKsgX8FHfu#(Wq;Ws}8Uu%M~R zbLhsYsevh4Xa{osabxwnIg90(w!{~7N)cYIF%#m+yE}3@Wt21T$?@{srFUtMxk|Zp z@$#VRMv1W>K{NlZ%70)Ermr#uZdmX2FIeBLKKG|_dgy~@?!Y`mgTsPUK9>9{aCu^K zC)AzREq+7W=xwoBK}>CLuFr2zk(G9(pO5ngdahW~$)315HhQgs5vjCl#^?HF_Ltr= zOsXbv?l3?W`SQ!eWa_UySjSdYCll$VPhWauf8>^dG(qm ze7EPEe zEs1R#5WbhhmLT9-KlMGY+E@s&q}+E}{g^;Xw_Y9#G7+Rmjt-DrQ^UhW@=@*c--Q1Sf# zY;Q7lM#Jf!J8xgfA6>~-qLOsEm0?2h-ur%ZjZ=cLK#`;I8yJLNgVwq>YRZ}@mwN?(R+cAYN-iTItp=^NL=7wK9Grq{ za5`QhD-W#=ADIKQsg$g^3T#OVsIG#njB>IiS12p3LiJErXm3!j^D?Tjr79r2GIDIy zWZ5cIKwhf!lao<}J+oR3J*(7J+OjJ^x^yM1Z85oNrI!JAGQRB0Dz&Y$?7GXKI$Mnj z)>FWAN*K_x+&VQhX?1?H>d8*=+E$?e$CS{sa$S;FLuFwdH6@KQ&RUA>Rg@J=Sy?@` zr47^-)lgq3xyZ1wpn=-LdKyY=>8Pw@pr)1HnkM?1TIg%-pu4S$in3;k3fd?ZxhY|N zQ%rW^M1Qn~Y>Y;`3f9X=xg3_a%vMfaVHNcStnzDXEkG>S(KKqqU-oB4w^c zE=s7`{^~Z?^$f9faEy(k>sdd(meJO3HMDA7c{}yhU351OsGk1Hvzq9rAE3FhPh_ij z0W2alzEt%hSd>;xZC)dr2m08%W|(b5BkUd7gR8oXXrvamw2{gJ(X;Goa^mt;@aMqrIPD!hG&Bz} z+%v+4o&g#}zV-Pv9NoO0$IcyO+vZ6cW&GXJhT>uE?Te4__>=eWgwT<(VK#L%vVZLm z`@8#j;Oq%rd*KYvZr{kEu~7y)<(=*h#)f)$_|#5LAK1>}{RcRFcsKh-dg&^yqo=-; z;g(L-3*bm|H)~|B6widc%{{bNHPbBoG?g{bT3SzAiOjd?L9M-v%9J8%Wo;=yyZT%q znXB5uYMRSiMUJBHrYtIxifKqMp)IqV?y_oznp#=Y*~8A^A@+>)h@5-qtP;7T7gA=; zp(eY6jS}M9*u7($_6dsfi zx61t3Q*x=7Ho9aEIxFhfHa^6G9cvls?qi_7oi@>}+T1D?h?Fbi$cnX7Ra8q~&me7; zO_V0&QI%CmgT0it;z~MX&5t#-v3p=x=CP7Aa~65=1yrS%QJq<=hP*9`E2K8PnEFiN zDMi+)rI7sOBJxEBZ6dpo##Wm1t5hK5o}*)&xqp&-k4{LR{W7<$Y#kZlwbw6j;`9NI zp4iJnr}uKty*p{{8W7tiHZ38S#PCe&(~8+%SI?HJI{LFp*xl2`Sc5o*3kb zfi}+8*RrFif{nI9cG>bco|Vt}!aP13sOIa5Iv%Pm=TLD4CkpdhyWKbECO;<`b=le34dcgwk#&hX+$?#4zpB+nKv^<4u zeLQQc3V3Rxo%4e>jyGrU!ek*|?M;Q(v$^z2A@6P}=U{a%XKV5~*__R;(oBvtq;tM4 zo42+l^YfD$c+D5yi{ghTGC4Pr%eve|=|lQ_EScSTX-wv1a#U@SIT!2Wqh)=iBn^(VjE?xh)%2%Ssq{A#M$*tJiWV)we#k=W?tS?#S=rh{Qbge);5-r5|PHKqw6>^DQ5(G0cXeSxG>qm+L~I% zODY&IE2T%|RG6H{Pf{TG?54Xb9 z27W)9!uJ~+;0c+}qeedIP3C+{IUDi{*->7~Jsnj%-Ce{zjRn*vWiVJ&Kv`-Q3Az+& zlMC3_SjU#~GPV?oOx{o9>wDuFOpfR0mrHnMXDW8RiMr%eVzfrw+zoho8C4LM0`f|T zh#@L0nvg&uo(2_2w^!CtOKv))iOFO} z#!+HQkv$+)_PbP>7t!@-Gk%_tw8tmV6&tO3Avs!`z`NrK{GltAANn(4B$oHfV(5zr zBR)6+t5=vB3N>CAg~309bQ%B7I2-v|s~Va$D##-86B+qNsbg0{5!+?lg{F9HdNbMK zR=V@k*jbdphaE{=S|7`w%3|4*ok2-#BHa}w92{um%s>TuYjdbih-M(e!j^(qnoN<{ zbrBR8OqivQ5Dz^eo*{U;8SwQ8CtUiBmj2DYdQ9FC=mKRf{V#hf4DpLX;~P$ZdpJ5D z6XC(p82n85xrN~4r6o}2R42SzLrk=ZJSTFJ8B7s7SeDA>l1w!e)R;Y;;mkBzl9EW( zS}=Hp|tF_8jp6Tu&X+T-DL@kF=VmdQouh`q-B4B}dxM;l4Q4vytn89?y;bzNI?PN%Vg`NoYyzCM1c|O1 zL*lRmnQ2MOr&x4neNP(i{aDDSUuN*feX*pu`{J|MAHBO?bWw+o$m6;@obizNEdd5L z8jZ9r(_p^Si?yOhiWi%)>|B~MN@>Zu9IAYKbrEBEcJ3LGIoaAwQdAPt9Nfr{_MkFZ zgZmr}r|S}VsxFBqs*^ZX9z%1CiBwGl+jEU-n7yv(Fdk_$a$mibt+sf|4dM8&(BL@7 z6W7JQ1g{7p)x(!MT^Kd`2-TaD^DR#J-{pp8mN&t3J@C2Nh1j`XB+Ydr`c`+0cda6E zo+p-BZmiV?v&#}h$to{`?((L>)0wSNo>*^N!hY)tKCWBBD@C{PP{nMlD;BcE;VxPN z7INO^$f;Ck?ko1=K)yep_O9gqyj%F|ws|~U=}f(=E04M_=YaEk@>VTiW2_r*)N6RL z&Vy5VUNnU*B+vbJ)`WX<-0sas9bP_w`#mKH-am6{Ot#0POc*TRU-K!ZmRS*{w|q9PedjiSP6z@`l&DL5D} zXK#F5G7aS$)B!U2!06ZN-@D-Uy`$uB* z)Zw{2h(%Iw)*N^84AOpVJgG(tefha6An>P8YgyZn!@Qe3@tW<%)91w&Os(V1T~&-F z#Zng+L#9sj*q)<;+H2$O*uxSj2#=>A)XZpEGOukY;2t?oJUv;?k@{@zZmZ|1mO}0> zOJZYrA=x2Dp6f5*U|RvvA;~I0^o`xEJkV#SMDL3&$d5s@j^9qY@Y9hQ{BGlPez$ox zYciZk^LAxxo)24d0|;5=NQ}Qb_RwJbmv~YT7DS3Bh#O}Fur|}3sjnUQ@!qT0THr*t z#h)K8w(-xW@g9WV5 zk0)$dAe&PH`NxrY{9&^P_vZRi;^stwhYyFUQz_6Jc>hp2yxqXm^U3^acO1L3^>oC9 zlIkBwndp9l$xM8po~jrFd&`WNJlt76d!_10Eyhj5nkWr+A7^w+oG>i&Mz`FB&;{Nk zFLPpppF5j_y{Yx|;*&vt_~UKx_0>#0=fI`Mgw9{hyN&bsW2-0s8Vu)Hx}U07il@GT zP%oN2-Fb6UhMYah7&a%fF1wIAeJJgkrL=i2p}^INd=D44#0M~{^JY?XdonVJt&x8G zSRTl089r<`d9v9QqK4Yt73W8#zbh4fJ_OBQj&+qQ{oz401$$!m_K+%>|ohAO#w4;#^#)3JIezG>nMlURXW6c)HDx z_Apo6Zd*okm@i{iA6A?F$n|l@f8J7T?q1BAxd^|7o@!s4;@sJiGM%S(<(r^>%{KdF>e{p%U9vJcojF_vYhEx zEmXrk-g280H{G_18P_jouFSdPd{>stbHa0xBX08?@mS=HyV!;Kvs`dp*#9TLVoQyaaoeo=yxPe*A zVx(*_*UZteDxwlEa|8atMci?-8%yW8v1+9+H{Y>}n`XOmqwqdW2}^m6BeyC5M6o+7 zR%%EONn|9{$|Gy@xx|b7JZ?pEoz!)3lJO`Wu`UB^lzn_MGlmzs<$Gd0k}pcMl&*AU z>Fi}}ZOY>L?gE0O&n2@wC^zbOZ!l4GA(YJEKu!$+kq>h)?y7BEn4-S`mV|4dtA|ryH zAZJQ_Jg5ovWlKgR8)Xk^3iP5O+>idaAhxH3aWprAyK}-gY!BspNjT5eM{p!Jg!5%l zY={<{f5&2$-!h+jd(-&Wy_LLJ9Le)Jk=&Q6=jlQ{lUf~7OM)0k4Ck@xC|>OlY76H~ zxt6o#e*AfpiSKt>`Ej$6-%m#JU}F@+3E>ROS?S)M5}q1JXK$f~qvfHTs0`)qN)zXs zQ`j&4>=WL4ETJ?<2Qz7lw`P0eV7F*@) zSd_{{W)z!qObnQeR0M|59$}zbt7VOxuU^>L#yQdd-394Pq@^$rA4g?~hN_?dTBE}0 zj=3D7SMjDjoSdZU=0hEY?61sXby6Iov1STI--?3*<=Z5m3$0~5(UmRVB-v`+;bb`j zSt8g`tmpC71}=_;a(}zn&OASkl?HLNG*rIJgXJ4s$K&;Sj%I~$x-g9U3PWX{J$bZ7 z&zaIF_UDAlSuldb`3an_N?~=HiS{TfNuK_=%yA;w(-*@ECwv{fs5cu}7w<`RNHFHu8bn76D&4bJk;(%D|jx!r}VFe?MfSkjYNHcJ89%_7BLtL|9|tK5lL z;lgd#E@8>dD@YK#K56$-0n=@fPV~ik5iNGr>5dg*zg)$JIx+p4r7B2lhS-N2X3HAC zVU=n>{*PBZHTj6cAtl_c`p$eb zo>6$ZM@k!F8+1he)gTsZFd17}xSahok&mZZP^T2*NH%zjtJV|U{0JGfVS>Tbvd`}^-Eav-W zvMNB%O}<$;++|?;&4D;59`zKOqj=UcFl}D=WdPq@VbZTWpB2Ue-yD`{ikR(Z=Vrew zW_xCFvu6g^x@B;STN*Qca;2W06|;i4G+apLO0m<^6)&dBSUj12y}#@cLN`czl25-O zNcJ18w0}9=?li^A-wl3ZlSL-VxMw&rW2U$2@${;hZp^qz+L`IawKF|gx-^J6^OW%C zp0cO8;^i17-=a}y<(upJJEaZTBc|Q%rT!n}O1hG+q$}x4x{|J>E9pwQlK%hF6|mkF zx-e3YC(Q zs(7VqpuD7?Lp%5I`V$ZG_pjdLwWlx8P&bUNpq-e6O03pW71(Ds7ZM*+iY2C)@aQ7K zOvOY98O>MSGZ#^}YT{JcfQBg5K zRn-vPZ4(UjjH_Wuv+b>_7eISSH|aUeBxN)Z5nF~OzM2?w5fKr&7{V3cU_SBI5)y=$ zSaSgp#ykv>Qf|p3%9M-6QlNqrQ{yYiOs!G9?{laQ!@;mXOj)smTBE!UN#Bvwh= z(pGGR3g%J(atZ)Wsgsc;WwAxrQY+Q4vr70`#T%d@s*s@2EMhIiq$L)Ut$6N}ev-6%3e_T1~bBDiX?-vD;-#MQL>uq{)4jlna&S)v4iVOLA&d4|$3wzQTM3xK}}O zt^yJ)7oDq9L*o|a)=*PatAgs9iCC?25A*MIS{j@p+^rmtaq; zRDp+fTe%8kt5QIM`4trAl&fI8Y^hU}Sx!+#5hZe+n;>J1FQy=?np~-0BzzX7mZ=^A zYfGCbFK$w=bJNOI;9*lqGcA>!G?e#HRnS32PAk>+X4RWuPFfi$rfkwghcjY|h_@&* zte{KyAFXX2o0HGJ$iWxiVD!<~*zw}4Y&v*E1(7M9 z33C)3Oe!NQy+#FSCP(G5vAT(0zkG>H-@MCrKYYS{5ALD6w}Hp*-OXpG4)Vck&+_>P zFYwN>!%VjHFfiQ3)-8jaJi3*a-+i2251i(}bFXvk^Dh`XeVB@rd=+TdAoHY*salys z;W;n8jJ$$+m4Ca)R*|JLhjqexO+l3!hPA6k2}N9~%AittCiC4{(?)~Hu0rlhWDcrj zEDePfbXPSo+|)sTb1MTaEp*q{s~*P`IX6gKRr&RFb@sD*q@U{2N}5XR*wEI=q4g7- zIe&zsM<BJbMb8Wq&20y@iTRe+KL8dc{-u9dl{&sW+K-OCU?O0dfs zD5Tt8L~Ti>=(Rj6u24M&)>kyBd{kzY(2%E$uTpKdv9LtsQAUNLdufH(Eve+kXQ@Cb z1;|%pE2Jr}Tm>waXO>WsWLJT4HOU3krWaAC00~QKRp4n!ru3b1x&BalH^aTXl-R3< zr%GCdXT^hBQ+_cm6;&#*u~F8S;zg`6zgi7TT$S5Mi|{pGAo5Jkr6$Iv0@$jQ^|)OKcTgCSMP^7UIicxP$JuE~ zFQF-|fciu`Rnks#Y7y<3MGV*r*i>4^j_M+w=qu-i7CSF@+4;k!dOn?~;ib+hE;bi( zD$mY%oQ=+;0veKXX->?c(~`^X$`VdAmb0-y^f%Ye*6b_}l@)MrWhsX%a@kg3<6uQ5 zcbDe#+8Sy1U?yMh&Ej;ojiZePOqR%4lWoFZiVD`-Q<=a|XH)sd$z*;#lLOD%_+W1e z7uTlp$WR)mdTcy2n9ds;Gx_7*O#X4)#+RpZczjzXlU13FSLCp*A(u5Zc7}^`+1FCU z`GI^MYPa$2iDafeiRSwYQT##LfA^4G4e|Qo#%wNqAIa2{(QqQ0f83kFKaLgh@|sfK z8Z3gX1x)SBg3~$tvOb%~Yh+w`#cZq;UCSL!_!f&#kBE7dTzLlx!JVy|1Y-(k4 zK9z~t6q_@s%gm>N>X9x3IIZ ziA{Aatf^|CN9>uR_m#<~Wtd!@=Jd8NH>sjJzz{$mct5+26eo=V(nQ-%tWQB{=^U&h$VznTF$Klo<0*W3M5>^@u%JkSe8cc{ z3BljXh`*naK<^0RLgHwNw{V~^hNqfS*;AZBQ=F9@MQN%>vGJUA8sn3x5uS^~qtH0( z339WrrmTi%kF2GqxSaDFx_R#IEp&>Ww&WHwnw7zk%4F5E%Sd({W#%Zd!wocx3_4P* z^k>G>lNwJ~n)Fke&DJWh|5CoWFqIRv`D`u9Vw3PuCF?z1)}_WHO!XRQlsRoqOlGw` zn@ZU~8kIMC6{{+2e*k9TmitBN;|4)O7mn>aqvLyabw4=*&+IPemA!?$dAOQ44!835fjZtgUc(!A=km(o zY(71g&)cWddH0@7-a3)VcQ4fOmuFjf?PLf4e504CZ`+vqs)*k|SU|UjF@gJ->fe_P-Y<`1+kaeEU@wzrIz*Kc6n( z*N@xy_1j7KS0z(F=J2oAQn>U`0(@lVw+D6nd1E-gzMBTG#KO5`Ug}TdnYI+(9na%| zu5@b4KU|jkir#5iwlIV{Zuh}!X&?bk8k`n;5$dLq^=ic$tjBRlAj{|ZGk2~xv*-FS z=T3j_nCr>n`2pN^hYMCsIG^ur;@NerblJ-|P+!a8GCTZog4a%M!Rz(_iXtq0xhoew zZ{kJS2PRUJI9e&^hFTlDYKu75UcuRpa*no@bEvA60w0U)vpV>?lQ+`B_vZlca{*%?S>qI#SD{O@91! z$4vgXdpf6E7Sm$!q&qE$#t46T9zE=zLE&%?thC`hN9L~&xyX7qOP9}dn zU{}LgjwQvD8W2jR%xS&Y(#o(Nkh9K8*gl)*^Bi$^a3;^mpItE_ zRC>Epk{ddwOZieMUjs$+hYTGG&w*8@74JSF>DE^KQfYpc%-)9j^WxVf_0;=$g`WtV|ft9)>~dIj@tc4Wm}3kX~6LVl2enoxg&<}AkjHYb9Y z`k|Ta#=3Mpe;l$h7UjyyTbJUucm+MiKxxmPG-nTd7OtRBM1}x)w7<^)yq_1-Sit4 zbHi;*@sx4haP2bn`87AMWa(TFZn$BYw6l`sOWl|^YbA4Mt-@o8J8nzda9X&M07qZE zmTOe+r%M*NaO3SOnRcV28n$-EEi0LRy`$RKEsOlgDeIz8sHUui+OjtFhm?wE{G`}I z`KGUs@3T5Qw070=lb3H2A@Yr(e1`{UVuaUKDi~v)$XM}kIz#wW05q!SrK?skbBP|W zhkFaQNvT-C_K3*;N_FSDi>EImi`YKLU{;8J%)8A|4J&K&4J6qogjCsAY~C7t7kIH^jt8EL zym7q4lbJWUso{5Txy2jTdG0vP_2TwhT$p{UCkyU$CB(;_46P5jp@Eb|Xvy^T!65ol zV(=v223&+#0+ z8V2`xQ5c7cLfDlZ#LjGAJ|2zYfhsdL&j5zf%#7y5%I8)rTXI6#SLn{EMhz$H{W()D zZ4?J{wocE3t!5rQj-eD2y9*OIAm^nfp(*Q#eYF@$>yv^-pE;cl7d%?UwF z#D?%_t(AwX5*SU0U~g_5_mn2_KwTQEQ!TRp$$56E2a9g;z~mmv!n>B?w%m!D$S~H( z-kIp^Lb|tytR;UEJv}H5^QS=PMWVkqi{>~oXRfOX436^+r6j^YqqOHS+f{79JbahA zsq0CzXa!Nut~kzHf#*C|49?DsWCYM=@u5L%@=&rbDSoT)oVyYau~)8Q&sHw-V#f8( zYRK*z?{MPgI~=+3HpSze*qE!9svbC}U**D8*SX3wU#_~r?Xul*5IZ;RKVI~d(6%$2 z{*Pz88P~coW4aQ$)m?0`0#Z}F%Pqs%(SW~Cw3I90HBWh_fCGKSR>}2E9;(f{eC>n7 zElT**h&au?cA*MpFI5nRdPM%vX4FW^0X{4gR>B zsXwgerJYr*n5E&aRaWM>TDikLj@w<6xx+J!*}fUf3&`TCCBoD7emLA3C~btPpge_U z%u;}R1{`J^n09lp^rzuA*97MIW;4^r&UM~7%=FCWTDLT2IHhu(a|$m0?NFH2&YQz6q`%5ZQj#$ja%4z3kUbFaa{ty=DFOutL| zzFA~*hlZQxhpK17VEJxReq43)vIyp{)YDHB+61vcyu+^xLRyk z?WAY5ke1#^LRy`Aos-){a(V;t3GzH!@xsof3*x7m+8=6%bz`5mCizd-`a_lVBc} z$U+j#WyD#Ev6_l8DQ!qSlerX&rG#WlDVgaCSWozkD_1EiwHAA79XaW>l$5rUkWfW( zWEpkYZM2uR(xrHEE9@kxLS$Y!Lbl9Hu0pk=>UCE6kkFv|%k=E3K?>?eC}|v_sA-7G z&T*kNRJTn~FV7n~*3sNDs(M1}Dr-_fKAG`lDtJu++9~%6Ag?f^oQmv9sKYlVZD6dvo{82b);BgYB5ih6)zV$nAni9YD0x?9J*^@W zW$eS1(tc|@`$tFEH8#v-M-OX+my_GZc>j$DIJ9Mg$*yL0ukB~&NGC(hZJc`iBBx$@ zmn{!mVE^M!aq#2`HN54pJX1o#c2rd{($dPB_I6r}%D8XC0H2**!`sJ)d2mNJy{%OY z^)<0=Ncb(Upf^94-rOR(3QJX1Ahc z8~etaIkd5deG{GR9B5nk8bD4iS@kr>~Rk5SWi(}A>H-O^ffd{n=OpAH_}#A zt$G>jDr;0hcTL5jAEJvrBEJ>|lv7ecLuoa2C8A3um1?NbhLSQB7+7CYqXPG8^J`Ra zVNG5&^?7xdbwi$Y$~$dUH8hngpt%a+zl!?OTI$OxX|1kN^Ol-QdYWt4xo?auoBQai zZC2YZ$}UyI5*KC{QX}g};h{?OR{@yj#FtZ&D05X_NoRSvtglkh^L$EkN>tsiv6riS z_7+t#QBlsWmKsJYt3?k=*xg;m-Tk#}udm`*XANij8@Q*ZoI|Y@+&5Ojv7RzUOG??( z-N0Z$Iom6XIo(;p+16Bkd(zH#_ct;xq`<=>p0d>!HM=t?(Z()nZaWIe5{gZMoZY$VCQsS2~Ulb zakjmLmo_!?;^rzY^cM2UWIjBU&Ce$@`Q|_o-ySdH*Eh4^y%=~kim7+v`0WuJA0N%& z{XKTRxwoAC4TbEjw)6doT3(qb@ot-!OvUsE; zm$8g2R;Q4{mQ3&moKFY8BLPCgZ>*_0;cP>__ZdW1}fNGHv78Q`aQ=(8HrNU~&-8Jmes z>LyB?yGQ$Z>f~l}GIFt{S54WbM0Mb8iE9Tq%$voARL0?8D zWu|1Rq7uo|#}gA^B~6=*P1^JE&=TOI$D*^~yef=PcReSoV)*OHIQU%0>I{?W-K8cb zRt*_?vMxpS7U$tOYD3MUUE-T^VV`^Dkr zW+WugihrOPH*cx$Z^GLz5@%1d3fS}XiI8WPz3PPoMG+hjiLbPw2@)RSl4-Q(&}Pq7 zbzKP+T$>{L5|crkF;)fYh4>i>(irj4Sn&4OOS@X)BFvN}Ct(N+r!Y1_~d*VF~-0cJcPGk zH!WcvdOU^KVD~WWkyaA5QFy!S2#~q-_f`J67b$#(;p?eW!{~ag3dU(!C~3h_JXo8~ zg@zO!ZBAs;9!H%en$_7c^d-m9DE!n|V$|~SG&7YEig&><3U!gBMkErgQ|2OuylATm z5=_=bQy68TJ;uzMv;?~1<(cpu8yKdBGOaRMD2`OXie_0GMv`=4F4VJwqZ+hrXX^^^n$aVWt8`^(^$2KmYw zgG(ob4y#_>;Gob`LT81ZzMTK3{5Os>#dfAHZIJuZYKZZvsq=FEq`ZGh^2a29Pv|AN zen{v+xt@^x2$w!6!c)aCbn8|Tum71I8wlx^bDzh$rdrUqWCgx_~a`A(+3 z8Di?|E_g1NsYgv*dLx3V`@{L7OV2;f+WB!)Cco^L{bqk2Pc_DJs4{^%Yd9lu2KJ_k zUVHcvxzdXP-yq(I6Pe^ilDEo(umxTi95qy%!bSHCG$v?iw1$!36HHd9l$niGTf}C0 z1>?HXo60C1J;@Q+bRmR$YiLX~(Gwqy$w$Zhxt_Q?1`-=&6rD2=;j810Ic{j(0?5-E z*^?K?ck6TbbR?7eE92OjY++|g44(}b@>+W~o6@!H&x};TQvckT&aSL@#;kEXS&_-Z zRT=CrmbKEH!P`Sw94gG@aDFD0ng~kGVeq`j=dlKU*p`zD#X^IEPBsq&beJz}s#=Aq#JU9@*k@`S( z*ffl#2hf}3D`U|x5bq^Zzl^UBE#&*dH_KFB#h=eQ@Z9j#{B-a2Jlns7Mzc2!5zgcV zy7Ae@U^o}agB>9}-eBU}hckJ7S3Jj>19+^_LSK{*PmGxPV4sOI1Bt}U3gkqdKR+M8 zi+>!yftSXXva8gcp+p_gKJI+7oDp|@GaIM2)R^7OaLeEepbFw%i-+fg95jf6V z&gai|!ppUs$j#<>qnyEwI-aec%cx25nxw(#=)=l8mU6x^hp#tR)1dW~`EX~Q&4-;? zKJ3p6Wv$JZd#bEFP@h7L-if*pcd~q4RnJ|Cu1+ezBhky1I)et!+0w433!9QfH$zv^ zX9{7L==5rh8#Aw7h|l7cL@jk9Tj!_RiQrkwXpQn`I5murCC+L{%zv)6az5V`_qp>( z@pffHVj#VGZ;VS^Sa$nj5z8rk zO-s4u&Q;8s?aXbnq~4v1S2(GA^-2|pqJZigZu$?+T*0-sIC8ZDQn|&M8Mm)u-h6ji ze;&-Z!;M>JyKw!iRopb!nL8JFa_3@y7A*2**-~GYuJFarO@qfO4YL-AZp`=L+WEfB zUKYqr^ZdDft}iz(2;jOq-MIaB59ZAAWA+_>+$QbLxXG1kZ*}LoTijG&pF-0V4^vkw zw4AGMaN(MnF2a*H4mZ0B|IS?Hpm++Dvg?#kw5u*Zo9QVskTN9{<#nr=aif>W!Ic@; z$o2FUqI;s3Gi2P?hzzcGQGqQAKc*81{hqd#x8>UpEt#K(2P+@I~or=v--<;c1{Dfx*M_4=nx z85BEuVt4l@dC4l0o!zMl4W!V=pJdq+Od^xWd9GNT0*Dja5VgXG=%sF$7P%2JZzYCh zE)<0Y(Hj*)XM`Vp1|PDPd7}}1^1XdI-nTAgx#;V1u_=pZuH=Ski@0IN3TDc@U3=AB zt`=Ect#}KZekXITo{wSnaw;6XiF5YG?BvPnxL`IWhR_l2ORG+UMb=rcti{za!IT9C z$eMN+yBoui>J)b6TiKSa<6MnD7u!NOSrH&|4CG=T0-Jl7SkhL7D+5Xo!91sp3$q17D9hP)*CRx9LmrJeB@1EZ;W#&ay3t;=K7YN6f` z#&EiY{sc1<_CyBc96OpF&jYewJ>8Sf`V1?5anY>LPUK)&4n2uhx)P#kiZ)WA4WuSK zjFw0PxuJUEfdb<*`97-YleXXdEwlh zt7mO$ID_#9+M{)32KbR3;EO#_L%6dWwtxUy!u=`JdC?RVM0czrvoJYYMKYM+Pn%go zohg(8W035*tEh|#lru#X#c~EskbNS?Crr*7!E(mcbF?f>_EtaggMBHF&{L+@vB7ST zaT-{c7a-r(-jqhVk*5nK(I=2u*Un?GAV>XXz5TZ3ESkLvH_@NuP$T~C!Lrt!xp|%s zH_noM#zjw8VL4^#`Ikd;-{iwpclvYP9lm0JJeYP@AXhEWGi`pT*eV|txHs( z>lbO6CUqUeUMO{^E4JWH4cE^P<0g4$=E5*;U99K&IYBtw9>5GKcbF^f%n@6%G+e%8 zqPcNVDARB9Pv&v3*?o_}*;EquENKH5aJ zHHNv1BUtPe$80w>okuD+xTbKUTPibL<8fGSW%>#W*Eq#-%`%G$Mw}*gSMf-Az3}Pc zq+_LgdtJ9I8i#pOcXk2}OGTDT?b3EC4vVsxzOq=_$-!YsqUz0W+AV&rVflCGpH z=}NkiuB0pJO1hG+r2mU_1*~_4uF(G?`mYw`f0zCz!FrmENnB!wndw%=&CAj;TiS@p z9Ven-J^uD_9HVM6Csz@Z)qsC&Iqo5LyuC88##NJIYrv3Pi7vhpZ(Tk$qE!KB)w8y~k(gUhoZZ;YBb&Q?BU|3 zexBbw#`C)dxVW>Q3p*s=G05|hzqE6ZSN01X8dN=vymn-m7mp0`%)xG6JlM}`2l{yZ z@BlBL7~$=ER`bU3A>KMU$Vc}L^TCN;-a0zSJI6+O=iqAIl6oKCGt8&=jPl{}QQkf_ z#HZ&+`QpJbK0GzZ`}d6S!I@q@KG(~a=lc2bY!6?Z9pKYbLwtTl=5KaOQXCm<@@_&j54o#dw6(VJ8$2= zj`xMmjW+%$&DWpitv4Uz!rf~)Hc`)g6J6ZDwS&j@ z^l{&&c8;!Y=2U+LUtKuBZ~y$5fBx+~e*F3(ub=MWm2+$O;|urj<>SZr=FKPh{*{OM z^5k}&-#5bR4{zor;s2xOj_{|K5AnfEr}^UZSNX&H7kT5{2F`8o;NsS9p4vOWg(H1D zex#j8cebl@^|t8A8#1S_9qZx6qay2r9Wwq7o!P5t-P|Qk-uH& z=j#iTqWA3_>22V|h{$NPiHCNHo}U=xr6c3K_4Gl`?;B_LKs_fmH*?QqJr4=*XGKPv zd+Ina+{*spCiV=}3e~ei*5kHh=ka*}0RQw!L_t)xMm7j-?rLC5Zxb6jYuMOY!%n$g z+geXoNjZHLRg6?sGE!f~SW_dDO?5)GY;3s<*4#PND)yt%DpKX`?*7l#X(x-BvcXi><1wqcFXg z;*=74i|f>oyz3gO)Hy!Cv6>S@2JbukL8z!-Exkf1p4O-#SrU$(E){p4(Q< zlbfqKE@M5|TF17UG9F!B&vR=V`TTGd@9nPPbZ z!1dLo?C+@Mq2W4C^;EF0+s2MMJD(gb=f_9Nd33y-3zH2TZ_Z;+eGy}Yc^qiZ<-$Y` z2ir5*-I&A4u5AAORt{6|$MDM=dj9rEBD?Bx$TY-LV6u`Q6-#SM78AvGda_b!Nlqu< zoUVpKP1Yx44UD5QCWW*8`E0Mrqc$m>(wJ1v4;J(J_9C7i&*9PjY+hMi#(1HfL}Mzs zv6QC-L*?WNc)X&AM!m_n0?)+CXnO&~7F zLPm5t_Sj@HqoqA#GWn4yl$sN1v}CX$KZi|u**w!;o(NI4*-%`wDowyMSk#3fUrZu!P1EC30&|&8I3klf=kmQp}l{B{%5f z(1*pN4~a(?5`$jqh3aC72#r%itR_Yzs3BA%LlafcZ3Z7RF~L#TA}wkt*6r2V^yOrc z84<4n^AvAt2|5d@VKFKYEJ+(fmNk`<_;lK1l6j%p#;3!{9Is7Lfny55X=h0SKODC4 z=k+P7H>yY4vp7ky z&ASH^nR?X1FUQ0A>3j^YY>4N@{&>FLnZ}pvGkCH;jqdDJ;WJhR5hmzj7__HJyUE1q zV=)HAs-EQP($Ynj(?m~2_eB2+Vw1>^OTafM5DTtQx;)waiDJg$74rvnEj-YojVLgVMM}V!|yLL_SI=T`!LaJiWs4@|IiymH8TR z_cai%i&xw9mp+qBiNcFj1-hl`<1qx9Rq&v*PXxYxQMh=9v&1nJ56=j^d<>#@@hT8d z@jf?@narPelyI~nDCgcNRek|};e-Z-6Qi?IWKF~p7A-tRQWtNcATpZT#CYnH;wg(y z!Yc1Z23s%(N-lgw_#4rB83|Cpo9=poe2n;e=+wFNSL7r2p6=oJdPS(-^%Rh2pj$9y zkyeftrSM#57N_gtIa3qEwt@s2WyS+qe%~qAXBaj!Xrru(yQKG5@qZ$GOuC& zdR8v;#badvW`7+8F*bv&SAopT)#k zDZ8{anZ5auRD_2!EHWyHG|(I$MQ2(p{aHpfl^f{IGBBQFqRAY=w$eoQm#4BZCzbxx z81@IjB6e{GJ1y|Fx7 zW#r`@v*ZiOf#*jTaoirlYfS-sy;jFNLuS?|hVx*hJDeAKN5iLE44f#AqtmP>Y?VI| zP8uq82KHn{^4E1{*l*;QBRZze2J*{6J%8P1R6W=IdAnJ3IE61K^XXPwc?hDiL zhj<-NrE4kj@?p;HZY*5j!Ky``YMA9zjX!O1I&!r-(NP2Sv057ABZvzO5xc4p`)Fim zzLB(0#jBN8&2#lSHMjUH;c!D4NsnYOMNgZ^KO-nW<~Lf^n|tgcr!9J>wi@_mz^sA- zP8LM)QLBy*+e7(jYa|?sf&&&#W{1%i8OHs^F$|eQh;jBrx6F&jYppz9VWM0UOp7ss z^R)@=v6(rR8NpvS+IhUr$ljztUY7OrPD2E5*97yYsvzD^_u;(g$0IGdlo}FbuQ$<~ zoFIF4EX`4(`#L>&VJ2!q0{QXDtC@PlflGV+_;56UlewM@SiEVD@gmRQPNUh2Q?+of7Zgm?LRa=@ znAwsga&`8?9^glOfH&3^&g6KxtD%3*?jcO1_`>5?!$k+qcg$uy%bl%xp+q{(Z*EK3@)Ha4ai?3nM}BeleGJYQ@$^@#n1;rewYRdMp}F$y^_g z;n9{b6jG|EwUB{LioI2!@t*u@kMVi=PLa9-B_>fsFSTLbv_=FlY86V*ur^gA{OQCdYUqm%q|2muvo00#ClMp3J<{gIi|1F?WeC z^A`JZ*FryTU!dWp1p(YR-%kbN&045YY2LCR?pzki9g8*GzTBVNmPwt(!Cbw_k89@z za>Lv}6^M7!0)K9peb5eKi;mC zu$YUPrnG;Jysw0xoUvT!KVJBxk7;UnN~J$1c`muqr&3n|>nZIj{9GmF3aIZU;r%)% zuDR2b+vj+2*E}y)F7ja3To-2E<-+`hZrnBBn_FbuE0>3`O60R*X#mR>`>|l256hSM z%l_(zk6VE3$03AkeDQK~Mjzx!QHl>6YQuPR%*bP_BY1XAIG=Be;H^zY9vu$hr3nr1 zj)m~{gpMDN%6{>*dKi0R1NiGvJN&MlsduZG z`mh$h?_uhbI!cy_OdaNmd}YoY=E(J(BELBz(*+{$c|w-~h|?Ty{ZE+^_H%*EjRH!P zXAZNaT;6fGU7p=8*RzBcN&RJVe>s$>;tf%GN9|*}(vPAe3oiqHlsQ-CMCSIk>zANg z`N;>#5QS|Ob%fzK7>JQFa<#x(*6BdovdYTVwl|fGbVQFaJiLjIc6r4jBLve zrbTlkCz4(1MpnlfB-b-y4WiSko7*k22+ z;lYf`S!H9ImF?+?tWS!T=V5eNqtzcG?8!`^%N(hC9p0Rm#I~#i`lBOhl(Up_y)DzC z0;7kMO|teQX$T5qG%cR-j6^09&8$nXGH9}}CO%R2Fe_aaE90`~jL7%PWOBUfNpCbR zh7M`3%NR+YIf~U*tJII9J=!F8!@`Kv+h9v(n?04)at<9zjALz*h0(+q+9G9a$x6sw z=}TwMVO>lJ zNAiN$m=r*_(VKy24Wkx$W({Pm(3S*Wwqlfw43VYmx(LjF9~^PWFg`Pon)pzErL5BJ}ebtK`Lx7xdL%Hp``E=#mIJdeA zzXi_f873)6#$J+5gUEWh*huBaJu4l9krO|R9CHE1`P_CWgg<`qRDURzM6L44=bGhDP z6VsNOa99+{G$l;A*j0z=%em$zHx@1MWAS_+Zk->5!);oz-$Bf{L;9E%%k*0!n0{vz z4h!ONm}6zy9T7O(;xFVOpk*Up)>LtNN2!rLd- z^WzIgx%9-^o8;-NC=#*v`LR z-pW5;-p&uttmki!j`HoJWBlX78h(3W9lyM?o}XWtDfydg zxb)T}m)?-)YMJEk3I8fd8y^a99}1rzN*^D{`ya{kPo(^FDf>*u@X;pqeYGv=_qTT? z|4{n)Xbe6Uem|4({!Yg6M;XWG!n2g|i9G*U#`mA=OYcd)?{DDJ`%jUtogYbKy-^ueYk2CeR`=#uNJl_pp zOZgvK4l>Klo{CKxq3;l44sb3$sT>i&>m+SpyuRK4^ zr6104>BoEE=kxHB(9dU>`r&S-ypt&*{wnw1 z9KD=>cZ5s-Q2M=xsqgQRckgBD8@d0h(BDo-pTgIlrO&?|X6moP|2Kz)7op$DSihEM zzdOWlU+(47SHj;Hhxz5BJ^cFFZhrW12fu!LfZsma#ZT{T;^&Wd2=Djs%NIxZ*M|rA z<-^1L>*K@x{e!*yp4|4A9^qf++}-@mbkf4{w1TILXu>9)aIJlsXq>9`E7TH@ETIdt3PF9U0?4FY?=ukMPSk&v5D6clqu2kMhma zBmD94LH_>iq^!va{_yx}zIuF&-#s!a<>UP6nQ>XC1AOyj7k_=apMSi(hJU=Unr|-j z@z*B@`Bt9&@a&MR%Mp1t#?Nm~FeQ3@>A7M4{q!*3J<-n(Qt#i-kMiqlvL5C6ud=@W z{pwnNd1;(~y*MgscZ8o`Ud_+1i*9|glV9GN;4e@0^W8-$e?@fj52yI;n{)i*ogMu6 z@-{xZZ#AEs8|KqT2KeZ~Za%)RhY#-U727n($M+8K;oUuad3Hzzi@tZVpHI(9-P1jM ze5PCK^zzY}KDi!L^LLI9^2X5~-Z|03=Vu1^>inQu=i_^&jr;mk`t;Q0`Y#{q<)wXH z{QiLf-Z|3Fn|oUL`k_IdKGek{+Z%aG?BBCT$9eOyNnSiP$XiEy`PVaJe0p-2vlH!H z*x9QBabMii$MZWoIWyiYHn~g6`gmqbJ0BhD;QJ?rnR;=UuaCC#<$-2?J>LS)w24h= zGINfGO6N*T;6VZ5Y-UGn_i)^bj@m$SXPl#cjJ)sx&)!-Y)bXV96G zOOHL5k>WghvkR%TW>6VpC(D>Yt}&J905h@vRtD3O8O*VMK&ZQg z7=JTs>{-~&3Ai~&5gC+7RFH*mjR})Rc^*%5W(Jd$xhn9NNhAixU^?lfp>5sd#%GgY zN~J0*pX!thT8awTKhVLNibggzw(-o}>)5-xmz`t%Y#-`o-;N!$GpP3AitQh#7sIs@M1R^yGU@n$qX)7r_mi(wxvLX{n(#Mf)Ou-ru&57znIBe(N2XlF}J)M0O8SE*~ zW+*wHkGH16gNb~-Ig79NCUdqmo?45MzZ}ct(VlpA6q?ytmdNgkME2CC)1MVbNldKt zVWKH1fw7`Qx>BR~=8+VBx{$=HYpwipCQ{A=T7Euh;?fxtJQ@cVGk9lvHqULc^U6d# zr<&q9-Vn#d)mdyViKjf$%xFP8&umKMaD5Vo8`8PESMknhmUWv=y)6Y-uLuHyqlk_a zIfh!$_(iIo_5wx5L89B5Km~jkMW9B?157IU$r^I^iB!YnDgZu1u&kdDs|w0<@(jnz zCmJ8$Xn7umhqqA$t|{K;6kwc(Z6Ug{a|Z6ZBSefku|QM@gMfs?4$c^PVEvw$s^N8B1eAoEi%E&5mr?UdaB~XsjN3 zDhy^W^ri6ezD$O5WxhqmdkT_xpeU1i;XzsVSuydXnUg4rv*9OvE?uF)!(EFZB$6Oa zI4*7>DxVr(1F4asqXBwcT*C+oFc9La!{`%EO+*Y$(H3-GVYsad!OvBXt5XOImIdSL zrjvCo^6=D(u7y(&Va6J4B+yHXr+YA=eg^!!ba=Xk66mJK%Uy?$YX}8NL z8cV43Gk;+Kx6cnGK>AZWoNdZ7vOPb7y0}POoHZ<1?vJx$2#Z$)vv7G3Zcagjcp1=n z$he$?i4-{$ghf#mYoRhanv~!Ov2P}lv{BeXO%#MjQ!KoshZ-;jg%Ri-$jaqj_^k?} z-l*f1ZY2a-I=!(`ObD-=GAtY}FmZofJZln6oGgyvlaW}S?MR|N(ul<;4A(`T6dAPA zzD{%_Sk{b&y3}AwEIO>-IwDx5YD_97m*gD8Y_C z#Jl>_XVLTfZ82~#fk*1h94Uz8^A00#mPGMdbBLUIrpXy}8h_g}kKfk2a_M0wrY>rE zy)T+)`n~w${%iQ>aR>f8Fw_gWoabQ^h2JNAXTe z0+%+W^ZTJ#PL&xsQxsxjjNb- zr!x)KD0)&2swbu5a6OhlMgP2s_6ruh2_+}gpX8uGG;V%``Gn#txlJF&xtc`I)LE!8 zX&Fv3P#qr1hRkr@8%|(U=KpMIG*6XB@>WX_-wo<{q}0sTBr}gzM{}+;fETK?{I1== z&zntLtPdsM(}(H+Urvd>=XiUeS?-3@{AC<0Ht}Vj*orD6CrYgRX(XL*$5U7n8_2!+ z2Ku9euzPtiXw>qI$oj)Ve?D&r;@LtU?$31LP=On5W_PSUt`vlNb0}ZOki47e?@yAy z2Fvn5IpeL8^ViM%dxtAOO#1U?wKuI{9u$PQ5bxtgXVMBdbuHg+n$FKh9N_6`yfM0r z^Gz<)$1Eex$593JS$tQL9^y`}&K0f83X=VO$qo*|;O&DwB#1;`e|(pF5au2v>m!=( zlq5D~r!tXjQP91nQ-YS~Yw@!Y^tMl(bvCRe=X&*HJQHnx@Kux#cc7SCM8(wkQh zw89;ei=RAq!*iK4l)eBKhq-ZT%^C3~|s$Dhf>AZo)zo)Laj>HUfGbR%%- zDgu_ekm@5k66}RN(31=wv4j5ZbcOq|Hb&33R4rS?F07B&vQyUO1BC{TXN56t4W`>1 z%9^AwdaYVoECyOlda4W|q949Qd;8(%=*x;?B)}z*K<7|2&fx^g-WK2*M4)?! zoRM`bTolagMS;v+63m_RHENhw#jDiKv;DY5Y~Ag1eYyEAPu0`jG{yVgbxPPr#arL1 z%bw{Jk9aDmN&(L);dGbc;ILc;Yg`7&xk$OZbJZ%96fbwvu3g1+A*Br^e5AwmPFyE6 z;~Ht}sue1@PXW<6TzlDzp7P!dwI6Bo26_Jm*UNyA>!odJPw{ZKXrU*!&hp^4S#J2O z(x~_Tt^q8W@6ENhxvAhg)x+Mj#aw;6kLn@srUkxSb%%^W0TW&)?JFP=Y2Rr{Al@td ziS`P{XNeap=6hfZ5xXWf(PycjtO*Ul&OzLDyEmRrfw)SY<%_-0dxhY&$d8o^ebCDs zB+GhD4$)8^>rYm+hn#gi*;(hu%d2(#yi3PVn*;cIokrGMiqY)2Y z?eXQSv0&IA%3p^AMc+bXeT4Fg*tw@l!+EVeoZpW`@o`54@3e*Se64|piu62PW9DLo zk(0S0JXI6U8?yhr+G^yr783{ULF~*5=EdeH9xB)KOskpuD$TsspUQ7aczcqB{m zEcH8ZU#tc%(I1`Ie52U(xDYK7zIsBvgX9dYAw_S%&CyHF*C80CPNYX57B3ldU>Iqk zVVDC#NeB)lRjVaCB8;L)Ir~L~Q>4|4T@0l}_JFc*12xg%Y8ckiFsY*tCqGQj#?o}w zXCvpY9JY*0Ac z(nHvg5~h06E!PFg8VOgu*Y(PIeO;oFZE4a^d?>4B?;DEL(Ie-oreLY34WV23>j=_P z>!T40Vjv`pQL(S>p&Hu69u690&lGudg@w{CbsK{8D)6q?5XDG%1Y1)RRd05!a;9m~ z87K{u=h{fh1LX{345wS3RR)EUvdo>@&l{ySGQHf$@xQ!ZR_Q!tKM!P6s*YN%4+TNK6o&Y! z_Rj3+f_AYpVJ^<3_=_EsvRprRQazkSW*%(I_h)al6VHtLaI`6m8qtLUQ#1up5%OIS z%!WeQkE>kSD)q)Pg5?|%BoskMVi-;FvX{v|QEl|X7UV^YuLmh10W7#>DLJBtN7@R} zxwsMJ;!RU(GEc3pWmi=ZPRlhcT^`JGIpceK8p*R}v%b8B82Jvpake+p6marfjZiRi zSB4R5OeZ5I50f!f{Q;TsgQf&y28pIjLN)TuFW*#w^3Ak#c_?=-3&X`DngC6*d@IEh z5Gvnd@-3^?rsCl#-&y`v!a_3%3{1hpF9t`KXdG8XaqB`Y^Ooxg46x$t8qV?+;rM!+ zxoc^N3fP@t! zA?MWqmd+CUJ12mZ^8^0#pO7o*O1hG+q$}x4x{|J>E9px5|4vuHdROQQ{V$^bYC-;Y z>3Q3;R^4^O=FUzx6*Ix##Dd4wvw{z+3 zZPJ#Ia{bX(_;}l8Fx>k)q)hJL-VPt^QNdbMUmTS3-BK?6s?QY?K0cN)eR*8yZummz z%X@@3AtnDx$q&IN($1&5n0jCOeS1AqZwe2}A2}3&-N(}2htmJYo0$4cChN}ubPdS_g6k?UvD?jK}4Uu@yG&lNzD(x&jB0Pf`3)Th$cr^5GF2e|ab zP8E!&fbx_&yr}^0)-d(@n8IcSzb&+7sU2P{4soe+uAAcz;dFrH|L8Jt0LNm*pvA zd|%oTx}<;?-xX41BeLc5-AsMHSH|)m`eMJ79puuN3W)D8{N;W&AP+pGf&9 zGT&c|UdsF_?@oOpvieBq<2_vZaF@){et!Gx;APO;n_KwhwGI6ChRE*&k)6`UTbudy z)eZdg>Lz}9VGBP!zm+AUC9ho=L#b4gu%}@Uidw&^Z$Fc1F!uH;0lQ-DjW{Yu{ z)><=b4Kp({Gcz+Yh?yl@%*@QP%(l!d+p^3o_}%Q*e($Ff&wV4#`SgT3BBQ#yD61+n zt9sUdGOsS>*2}U+BA>V4Ss`+?O6C9V+pAQ-+?~%iaOYDQivm3STx9gR$mMlO6%gX5 z&vEw)xxcA^0Jo^XK^3%kbG-^Cy!(wjf2ZiToJQnX0UUn5UQ*HhZ)L83+|6wz{XqdZ?vOsDeFeDqr2;S%-hU8& ze-@qk;dyCCbngezq3<_y_eX_?t=#!$Eq8B+&pi z=k5ziS407j+*e^wIgl=8x7g_1y_ltepx!ljKvt9gpuA86EcJSM| z4(?u-vX^?fbz1b~Ob@p%NdBo-emvFA_b1!R+F_IBReSjQ*Zn)za91HT-s<)=f9e7UKHFQ2RC*7h1c z+E~i#a{ubeaxN|?;)Nw;92_lXXLlI~gpPMqvcJ24wUt?HY%JvPa3-e*)3`b>Q_AMB zvp=7u4J9n7C}3M#376-VvZf)2k+M9N))g?nDv#lkBIcBpFt;p=Jp*~1npe(}hC(%L z??`bDtrwojsEUoJGbfGCf=udC6Y0;%qCF#x;+PaFVpFI}NTwn_i84t` zV-iRTjv^~Kmi&Nt@`7W?4U1Df^2GXTC zPO?u7DgFs0dMA+V9!Gh&^b?k%dY(%OiX+k^ill%zl6(`0^@t|fFIFud?-@s!b0pzz z_d@hmX633L_L3tq*s-98#hs1B1m{tnl+N30^0;-piQkVj@av&EHp%!mc2@D$SS9Z_ z7tk1!M@~T{&#fAkahEV$QOL{dx;VbDg|32PmbTY1zowSiJgTNEyKA=udXV`=S+Mi+>aeF*LjL73Zk5$Kbk0{Nzzx?`ga zz{<)OGphg$QqEQzsCp{U+J<0l9e_p?AZ7fpw)ID6ABwF$1cS6?Ya5J4-aFXe14jP; zfMq^zL26i4#nWC+NFoi1X;eifkRW-{E@1>Z2jSu1kEg+(07D32uHj^c#gOVBO-pP7 zUoXk#qh)cdsR?3hLnOQE5;)(Nz(@0vxwAcmYjeZdTNcExJ0sa#=g*PWAUPAoz}jej zSQW>cLlJ7|=4*>1nVTKSP(}>TS4VMvD2B_@#^Ig>USE{Jj$%K~wFU9oSg>sSp1juQ z!H*k4czxK9H6=k5`FnGDAcmiw^M@lkK3(g^*2W-KR)n#>Hk6OoC9$&BpOOG4P7FlR z5);7ntfZXHL+*Dwi5*FCf+Ldu;jv^1vn9Oj&+1!<2 z2RD-a15_`1{qfNpE=^`jQXsoi!b!4sl_%Ccxue0&JAcjshQ92cc*mevQ& zR43J&U82ZAtXr7saZUlxnVY&|V&sI0sSA^Zr>WB&(VDs8?-YW$@GwL26cC=Ni6eH_ zE<`&As-ES-ZCq$|3Z~9er-}zYS9?!p8YzG{gBk*A zs@$8JIb$hfo;JgQX{Junk24mg(wDL0J+PjP*~-#QNcxq$=|Yod*sEpy97SL3y-9ZS zCS31ExXzw3nV0GyKN=%~@YB09VX7Tj4t`X)hB0ZT0gbr>Mw9HAImt!sS7YUXr`{7^ z8HcC62c{NII9fTA=_+e)BxR@T@zS^u=jcX?iziWz?)cielOSb_Tz#nV_u^=6CiBvx zSYH^Y0$5{&uK=B!8g8pODujk$U&;dlDf10xv#djBL@@RUP)1TcnVn~#INDKcfi1>UZ1A?!(HHB(Xu3b`sXk-{ zdEjrWr#8%;Lscw?Y-b2Z8@>2^p*uGhy6|$JEAI>k@Zl^! zepnF12VLQutB+t$RRCvNe7M`>!b?f^EKc&~^F<+iIp)ifNCyI^n9<;GU`w$x^AnvJ zjCA6q&PWc{gcE0NPrQ{q&lh{MtI$(;iRJzN5MF5XXK{)bvr+;nad%`>x)V1$eL0rq zMx~uCodJ3-HX2x&rejWo6R)*LPyS&Iy6T|}oGh;wmeSz0jlGM_FMdYp~*=q6bcqBT(K?LwBFo$9Hl!_SF%5v~jb zxe_{4M~tPOe1nz*ttErO9?Xw$rYFda7+Y(4BON(W7tBbEln?WwPU0azi@nB_wJ5~Pn)C9PaY41$Aw*v)k?y5(|m-C%?q1eE=JWFmbG3E2Q8ctVw z(dDnFDZq*&h4##kcOuK#jx;+r7AFUCwatZZmTI^?--d5R4i2Pf7z#G0+SdXvVuf=) zt2GIFEh7nDY^(BPZ&L_sGQ2pMq2cZlXP9fpR~0k(uH6Dg41CsOEpu(fuftY+*KNkF zxmK`12V>U!)MLSoPIKO=pUw|`c3i8pVSm!2yj4Accbcqut6s;ewWhpXYQv5&Ejbob zDYr8w&BPLyr;RAJw_?E0z^pJ0eO@+{*xOL0*HC7!!EN$1>YN-|65>F&qLjl(8PS>+N-HxFUduhXx1yW`x$c8-OugTknMbR2My{%=RuwhoX9bExB zik$Vd`{=0mwo(ByzNS`qnONg%ZlkXAq{pZ7=)WfMufI=b++(H~kF&ychP4_pH^oj* zfk987=t8%zlj_N_(%nFBh%;?|_LM6jQoZ#w2M9lM7HAK0p~26c4AIFH(dPt5dz@$5 zG36<1p8mHfPd%ZK;(gDQzx>;nKR;ovf>8eXl!m`PYRQ8S8S#g|{s+XSc%ge>n(FON z^^B)@KNC_ssr^BDrvUXHoX#KrrFf(>z6a7%KzRyq?=MpSALc6X;z1>Zq@;g%*op^4 zZvXf<3m$mro)(pzm*Qbh-bwvG z{>xImpEN)-fXHC3&rcKksf2kyWS*QG_r>q%$%^EZppZ(W}=y*CD6=(uaP-9jvBEGc63MS zWbd-3LS!q+(UfSN8Oa8bdwWwVd@L9cT`Y9ACc?r<4TaklVoRgQW@m^MWwJjNIa*Nd zq@_+|tlCXOyRQwMimXbxH3<%E&voEfnSoseT6X3-bF$ElQ;HYdu4vvLO=4}l2QOqf z^LBv;7m}R0mg~vMblGpC-5E&tW>skbyQ;!D)s({ek~rC;-B~Ag;#_kO1L4l9r_qga zUR|8*&YCQ5HWvo6vslil8UC!w@?&jIFl(}d)DXU#3PM{1$+S4ui)Z^+% zhm#YPwg$?T^OeSyQcF7uWN*ut{i({@kp?R}DokyuvNX^vcBG~3#p#pPBzEG*akln8=^(F<4vuJHWogGVuhy&BO3yx ztgrAIB<+VuS-0sLJZDH>Vw05AW4bk7(`77T!@Oro+fvqXrWH;zEF|9w&*`QF7|$fa z#+*c3WgoO+ZoDIv9yTQDZAcdT9BN^S`*af(v}~ARMzEC?iCV1+^oujIR_)|SqBRQ& zW^%CIm_xG1DnPs(KR@z(yeSVc(3fn@szM7EWb5dO)6){=NK>RMb)k;bhT2jVpq2Be z^yjR>-^N1DwR)z@p6V;>wzsR0P+K{>Pc$XO*^~9vS!}G%6@7PRqMYj|Pt~j6C(8Ht zXi*sn^8KyY$Opt$sDQnv?D+e$_VV2$-;z?s&N)oZ_Fg&C%8YZo=dEv? zUhJ3HG3onnPwDvU)As!RNjuEUJTbBKVw`+G{NW*)KR5YSd}Tg-xrDn{dr5L}!+3@V zF~KPWc*irz*q^73q(4I(dY43utizdU9>hemV8&@fnQ9%$U#9!;#|a)hFy4y?CQ7P+ z@g^wV_Wb$7j9?y^<}YPJ_~VQ~{xHe+KY2cCJtfrdAO0|1B_-VVzaKMZ;xksV*C-)? z?RoI;PGYYedEf~z{_t-f*%RD&@F_q3@T}jxP`r;y{y(gwoE87|PfI2|W{&X_COA&l zVL8>nAO2~^BTve{Y2z$sMn|50Lc`;anv>@$-yR-*%zVs>X;11fdfN8h4AnX0v67F7KqJp3l?{<7D^xk|GXsGg~cn5q#+EvPaEHd$-&<6{I7wJcN zFYVlY<3IccTL)OQ_3s(3NPHqbG+<8~(e7K3*Z>;3btJ2@4`65g6 z`0307emFIoACC8{fYfhK407XeAD``P*C!_J@UST8@mVj`oJh(iSB&9twW{jJ39Dy zS0|tE?c}QiU3@C~^2yHs(2gdlUnlJ}^3Bm6zBw`=^+mSj{-W%UH%X3x0 z;cpkk4qTb7=HI!tj60$`zsQ{aCNgsSl{qSi_IHt!UtUz?bC%@K=C-V%($?+Qr2b1o z(w6AROJhQkCu@D{is*qNUy2t-MHUn#WL$;)(Io=in0sths_alHUDH-V5>RdhUL{RcN#1uTjg~RlOIAOuV;1)?WIT z=l{3NO~w16$kkUH;oEKZK$2f5fJLFNq}&(M&&@4r9o56*=ko3|u^}HyUmr>TpZ$lA zcSX09al9{i?}tk{MtT`EBE_A4@XGH175SJq1GpUnSnSL9v+qKaN1Yw?@ds$a!^D6;UY z$iQ!>JGgbBLu_F?znp93r;}oXkF|(>Y~{}7Hg260TYIEY1^4}MqC@O+o!He*k(~~H zINBg~uYP3$#W$aDdexZ%u4ma|%)c^fVJGYLuitTQfeM9n2HHpr*z@=8%Q<_yk z*qxIt+&R$+N7`lmWjt3q#dbE!n3VU8QnpscU%~B@C8GCI?{%@eXX?0nwj7RD@YRk| zzT90Pdr^hh+bZtvui(y(O3`mgf69@yiIp`@=I$%SVh&0KuemhXktBZ;`)L+5jfl^t%Dt_2p#b;|2PlUz% zu%(=fiwih7yObki`J9$|`v!{H-B-$F{5FG*joFDaGns*<-? z3I8&#cUM;N%EB7irYktVu!_CH>uzcL)PgFG%`WG_NC`W83fa+J!2VffoLpMRzB!fb z8LHv>!C9PK)yB&13a&1xl=+wWd%Z>Us#)Z%o{u-z@Xm%RURzMXFG_go;R<#PxANlV zAOvM)7IS1lm+1Xm z_6%0gk)29MP6joZsZ?d8QJt204+xo%Oi^5da0P;Am15z+y-|G5(SFJfz9{+~63JgCdCY4JXPih+=7@Ha?!V^i;YtGw8}lrz0($ zhU9e0BNOS%O=CDm-o>X<8WKxkL>%=oNfb)^$$sG^`h=418%1tlEX5&_#JhyzW#q|N zdN3SJ=5$Xa{VBon98Ob62usra`E5-cJ8C1y^9wR6CrGC z@FT&&pFK6v{PKJlpRNw1Eh>CobCjF zHT>=y-O*f|<;?YOc?+UN_!$Hs$0?TPGY4k5zb z7Yi#dOsrh7uy$7gb|#kY%rJFfim?GBQ)f)g-PI7ZHr8$`aLr8e6|mgXMh;9ic2ogq zQ%zl&B+m+{a*B~N#>Q^ahMVNMVP+w1O1+t8t{7Xmsh;c{wSE{&9aA$m)svl_r8im& zZ>j6b)6?&Tm9j8*;o-?To|)#P{;>7TR9DqQ#naQBczTKpk4$pnp{E@9=d(^KnHhPg zA!DB!rz61LlaA0JR@J-6IU$h4J$}TyyW(JOkFVC1Ob0)Lg)ilYa#LwLz`<7qlvM|W zGn|}Ad04C(V)og|1|~{>6J|Iud8UgxuBlU{S4w;tfz4-_+^O7@4@JbD{tMpPJ&p6O#-)J;|PF)9o=5 zQapA{QUQX>kAe0)BYaMr>8P%Uk+iAQ8!vP4)Kr7;D11z`M+sN>%tR-ZKWj60!kl~w zarHuL?u3!>rL_6@vl>zj0ThVr>Xe;TRFrMNwO>U?ixV42kDLhhVE`Z{?q?E`VOD-XWi>w`@Z(RSTfcBBm@L~z|yqiU-JBTxUC#! z&+tX*75}2=s`Wru$lVa<8`5PB93zklhqr7j6T@HUR$f<4PhD@6c{1YRSpUz4whCrN zgIl4&G|=(TA0R`1drUKM`IpqFY6mLY%+%Y!V0y~NLcYHNCb0-J05;UUmn6?oGlKRW z+(8#XAnTVR3JPgT#0v=RDjx|g6y?#rGMrA{A79p|j9bZcY?_!LL-rS;ghE7;`iHx} z?n?+eHrCUs?0f@dGY3o#Bo-QrP+)9)Ghnc=>bbLW#qWfpBL;w9VAD9mcQ*E`Y?p{U z0iuQEe@r_OXt$0fw4L_#2>68MBMihvM51_W(};5TkC}4pffN&=yFALHt-#l36&B1Q z?Y2$wHvXZEVY?J;?y1L{{dq?VN{=#w^slyxG5}Nggu7dgqf$ zpEZ8HBVIt{HQ5f-#T_hos|*LUoPLM08WkP@Rkwzt!y)`Sn>6PYdGMa7Bj7b`8Zo@^ zmS`5l^krjNC+1L5FPqzdldYD}P$-MxBv+{9tSL`m(C_>|X{U^`sLpl!gK+xo|OM=}vE0Fl73g zzucGFQnNaJ2UK~weUm@k`1(Q>S;6a&M88d>E7_=9{r!txaF4>U1&&nc<$R&5DYNQ1xM>DVz-;rGp8!@5w63O_~Tqpz~YKt ze=OALoD6d`>c&Jd7~2IJWy9!(oJ$m=8dz0t)tOi~=|-B{&u)3D?iU~-$=p>9cTR=N z=|(#P-BLi`3QmWn@i_K<9++V{@`6rUnYydl`yg-_qQ9#NqyxLQ1U9yxf5z48{G zly)xOkc55j4B`DT&_bmbRk+uzP6gIPFu1ssqP3aoXdV)DXcY+5a7=`vhE}TIk$wt` zYk`9i4zbkMKN_6x_IFPkKpJsnts+5K=J|SQ2*DNn@xAS4rP^M*M+_LfQqTF2Wr~QY zzX^=9%e=5xM-SK3Ms7DE)m=F~%>3~iOIB*w<{N4S%JlyF0Xq4Gf9~FKEluQr%=J{d zt$AJ54P&vA0APzJ-V7cztL8l-sqkA$`bS$^IsZsh##xfwQN*x4KIjEM4~ zMt};90FE6#l8j>S+}ivAi| z4A#MX=l3aOlwZX$K=+<)JjYE}eN#&ipnnJNS$!#X{`f|Mx0E+CZ%5pvpE<_@qzhXv z{=BiEAlvB;h+g1UyRN-EV;s#m>|G(TxOi$Js zwAj&28#Rt3hg%Bk7LUNzpBB@yE7|&<9i?Gk5>j7fdhF;v*8OTE%1chWn26JNd6RH#3HsW`z5Zb~&GRAl4 zIU-%rt?u@@nKq8Ke^)LhEplkPG^8uDqLO~<4TF?_JI~@A+t8N~KxgUr)0L$G;KIQH z9u{b--g_zfLjQQLV<9nxCLR90P`h!#+4& zRtxcObG?bNu5!Ca!W(qnkA}U|>>6ozG>pjis-~HWCRjj>#y_>_&kM=0pHn7q_OsCqiE zoYC4iK5ch9q|_}7PLLw{jq^j6+c?=5vu4hGY~n@WT7h*&@G<)R9*;cwBvVia({F*L z>_a2n1eGbyun-M2!AVK%I%kr&`miDZxlXPity0u;?ubn+Ivcmim3 zu#ytIhVIzAKJ$%e!gmFn$ZTb2Wy$5iFa?$~t~x3y_7j7{!Mdg|%2i*K_piTM5|441 z$k%ZWJb@T^uMn!xI1*dvfBeV9qvYsn?vajgBP!V_qP~vUrQUCq&`#?Gv(QkES-z+b$nkvwT zN186<-@f7K7HW~^!GSl5QZqd;2rzlqc>O(Pmztv~^6Sp05q>q_nh`c3{w{f&`uV+3 zL!sO9kbQ#_%6=0emdkNsKOvr#tj?&5?dWm$(?4~Uk0!7-0rt|lX;DQD;j-ro`$7fx zZvT+1>J4`6gI?&tZI2PA&~0`2A^GIca16QMa_B`+vs)$ zs4XiCC0|jrIj}Ldwq{LVI+&ka>YWuCIeejz5djad zOSD{7`SAwQMHto$i&q1u@e5bQ&S|-vp21()QKXF%p=~=n?b>t*afXnF4BS5c;mD%+ zw6Pd$$Hr#0HO6}cqrPwkiE$@`pzty4jl;vYN;h-o!?m7G>EdVuQW4exg90>pooo$0*bA+}Ne=`9cL-N? zS4O?YLlw%cHyaY;=s_Lxt3v?6wmWB2(yZg3JNJHsB8$tT^yxGPYyEU?MAgC4{LtFyB{@Fm7W zzz^h`sXdxjb<2XipN`07*Yx{O&~HyFG?u+xIGYT01}n6P93O&S+JA>|>GbA{GtXON z6t^|)_x4r((NGCgAErND$wUqZeUgvQ{pcN{faIlQ^A!|4L%mA>NqmQd4bVwQxWuEY z&M|vb={P#Se*3+q*}c zHAaMm^7ZLT4O_>;5*!{OVu`!^;C+c(aftoR&G{8nWOYepUU3x>TpYT}w1rUDx`OpS%(*p{+WIthhDN(Jo%TWLIz$)x<_6kskAJeSk)LcH z;0Z4a&BER219$4sRctE<1i{xb zcov5n1!iR_xs*`c+fl&K-fH+kEzoYSWat4mji<;C!YgPU`k>A(Y&pxS1MRQi)acE_ z3)3f!Vsv7=H4qR9X)B6d>tkCMpxzW*X1Td~tZngMT4G)|<88uLAND3#vt>e-x%554 zDl*otH65(&fo|6?&hSJoEJiQM~HzV&~8${5=`UQj(I zi+|`rLTYpLZM;$sv5}C*9RFy5=EZaHTM_(wh+gKX2Bv5h0~+d^o5Is;CloiO=`tv$ zudwRK$pFdSo*C^LMaA}#M8hKl=GR8AyRL%g7Cr2)G&eY(zj~lp>&g{H?BPxsZW4&{YQ8e5U=Xcte4XD zSO=TP+Eo8I8feAr*tc_Xe1#IL#1QBUvFJc|?z}*Bd#wTq{`;30w0viVx2B&l9-?P0 ziM4-+P!|MX&0N$ChP-~$Nn2ay&V-bRb*ym|H8h~&VmiN@BokR+z4q1`m_x?<@OBuK<32O zeE!8Bc`X7N@2UvSW^3^Y&4Reu>4OnlGOMZay(^n%hpd<&9Y+@SXc}(%FL5tZZ&-4I zu`l9tQkVXj~F3M0*REf zw5L<8_;&VVh?~egNGDSwWtKeR30T9zj$xwcf*+2Kw9-b$S2j$`VFS{;Ir8 z#=_f@Dx7&^C>-m{GQht%`xEYKYV~Z>e4|g_I}m{$Xn4oum8vNgII$u*f$o7g8w3%Z z794hVKKtGgUT>bGd=h91aZiZEmA>J(_c1mT!``2x53JF?6CL;r!xZavN1G%dlGpi3 zW~k(+!0XyI1J}aDvn{$ZxmU1&2|YPFqO0`CGk$R%W6eypJS_J|(v3P8Z#bjU?3S;J z3iidya%X5{XTLU2=TjRuYnjt+F&5~Gosw^tbQ97xI+g~jejZv~wfZ!dI_1n117Dpa z07ME#CE4+(0#$d37#D=<@;PYl9Qj0O0rb?oX?3|DpHjAXn!%UU9Gab+*P+#VM84 zL+Xlnbe|ADj#4yWuH3=%Ynr){=%iB|B{%8QXWUrCj3uOrBeLni=_kgAuk_%Itt}<3 zU!uZaD%FEqxn2A*$3^Uh@RYSVH;GAkopbiSk*5v4b>_Bx4|X>8F@H0n`tqgK zn)78kIx^@Lq;;P7I_2z C>tm0NHk6&Pwq#&7|WucR;Ie%Wl@=s#n^R?=#z`?8R# zn(2r5DjhW_#ANcbDPIs=G8qq$7k2L)O7BtaU>;0r{4B^<)N*E0L=TWAb9Wm|ZAy|- zWd&#dI!)T*cW9oBY^p85HUjV}WFn^sZ*}zIH<2>GLwTt=S8K<&obsuDiKHfj^JF1( z2To$MCpMB8S>c#%vlK&PA~o`ui1NXAdGu^C1d^entTH)#e15?)H5L`IWb8BChd;zZ zicl7!R(n5GuwsE+3aZd&U*;v&%W4L?v_slcCM0Re3c_bUT14*VwUB$_q404Z z)?_l8*+iENwztpwtJ4E8wy_>BIJsv*lD`!d2v&QH8|GJ1-r-&y*N32Sq)(CLB6Nfao{JxI8t4Wm z(;8I(wVC9ODVCBkLBZ%+(&o~@`230Q##N@S&D?vQUawhswUv1^dibSvKdC!Ngq9iF zQma-`kN0U{O6ct)#bYitHZ5>GZem?rH@>yAQ^L=RjJE8)?siuL?8h9p@=!(ekI#2{ zS`3#Lj>g9I3`|1M07RY_Ghol=t-h6&j%D4Av6=qQmGx-g5>_ZgPuNRs<*r#UX>8BX z%*s|fa}$fy|65WI|JqiF&xSK^2BL+|i+_ED)E2(%Eq$wf*u^qY!~4Ah#=HBLDCl1C zwpw=}RbQAWY}q|$(r@!l0Lwz)Ts)JxO0(_Uq>Qwa9j9H8Y>*yBz{hZx?VkSe$N}jY zj#s7CeCkx;2S_8kE1!xS7tFkKOxi{213Jhr{0aOZ3q*q-B3ComZxB*V^rG0!V1}hA za^h>U!RswEC}046nfQG@UDq-hJ2m*QpESpJmaL9Gvf8IVkntbXZ%9q*6P+H;&&n^$ zllt2$_}F-0{RqVgC1|L5?t53fF~@W}*6U&Ib2D2|=IhaNM?S7E{ljToM0%wL4W)B1 zE_=Ow@674bG4uk#dDRVb#g;+Yl7#QwtD2sc#pkuuvi6dtc?6bk1t)`WF*KQI7xx`f zOv3uqO(P=9Q-Bi~V;J%otmTdk(+KN4+Lb;(A$HW=4TZeRA|Z?4umXWy_5X~5yZrDo zD+CJPam&As1Su4n?-uG9bFX5Qy*F2&v>4;BsTmit?u*~FNfA*DPmRqaId{CL(Sydq z1_CL3XVZ%47fT-Is8#K9w@61QEQNZaEY(~T2v#(Ol!OH(2TbvJYuye~e&lXWglg7` z?!90?e2-U_%rhv{DAB{P^kx%N(ryKA(TLHfRC8o_tO!OVSV+x9OraLbI3tqsA9N!) zNb%jzO_kiFg z`b-YZ5*ZDs;I{vex%q9pXvXT}={qA>nOQ*Xs#!TNt4AVF&l^|~G@n1DR`JgH@{2TF zwg&#{+u$nk{JKYWb+FF$0_Sp*@498rgK6Uquia;##C$vh_?q7Ten-=go*m z-Y9zvfv&zRsM=EY3sl;N2%~SWMYY<~< zs9#%wJGp(CM6^bt#m}{V0Qf%3^)i?wh5WD^h9es6-=0E=_oqA`CwSwj*VU7YS>)IG zfA*Rdl6688%2%V>yC({^fy^tM6qkLd6I5PSsnO&FVLKh}^b5&X3Ag;5pANoUk0%B> zRx&gPyFHsb5;5An^Fer^|9*yJuhEUtAcfUkr&P?J9P zLf@nvyyI!09UT0XIsciK#x^*TqUel{U%4h5z7XF+MS9g}H;s;su5JH!C?K(tO9ai! z3P~2n=Jhiz=#X8NePJ|;-;&*|H8`7*jS*%Yl9Mi<&vuW5{x{)Bxv=Jq zv>~9esMAK!8upWadC;paX+Xcmj(3x5d+ygP-5JE;#@nbbq>|Q5aJSlvo*7zDt~!p^ ziSn$)Xsk8YtTo@}R{{(e9TTJ%2X;r+)vCOjNfgn#MlE>SVKeIA~}vCOCr!d z1A@{Y|0zvIU7Kn4<^(!FcF1`ZvEid-9I3DSY!F(1%h~u|myk8t@VCv+ zbe~YqPeKhJ&)!?4evp2qy8CyPfS~xJdsccsuqSj`L@ac{4u(R$?S8R-J_lG++=gRf zKkB?X1{VKmM|){AY{@$L4-tb#(MWY%5q0Q8@B9y)4KwE zp>VT1O|B&G{hWdFy9er|PeX=#K*4j1KCw1jA^@lMNGgX>@gANRr?y)mjWLHP5`l|{!$!~RJARvrt z+I=#zv=;@3usA1kB4(EnVrE8=k_U0!mZ`7yd5Ao%vdH~T(i~@7z3O7Q`UqQjscCs_ zn%_B-xmFUl{Lkj{u!(ay!r8g%=E~qZjl|Kia$_Zppe_0KFsp5uRAA!GKD;!^b>CV? zW$8~?snjeFpaxbEG-F%AVrgS)B0+AwuQN0Mr*zR%bB?#Vy&@DP?}#jI zW@t5*&2=ovSqu$ryRpt9Kh>bew%o4#hu>){tTHKxm&+Vsue}YD>7Ulp?fNyk@SE#- z(#qv{dl<%AVy`kFpsLMuVg`}qYHC4VB9lj88XVdxO1>tv0bFjwkJkk1f0;dm?`SUx zwEk+S$a;wpWZr3(L6#j31pdipO*u|7d0tHsn+aqwL9d-U)NmePt?ml(bac@3RUj7<23a>Pt=o|1Acsv2zDgZJa5IKUVe(nJqc=+4k1>(6qH zInVsu4B(Z^KFOGUG04so^Fz9|_QGm!@H1g!B%g!vcTzN>Ca{^~hn>00v-84_m3GAI z=i7FM^Ya7gZ3E3djzEB+_Siw&wxg>edy(eVY4@U-$Rbxaz1Plp7jyyQY=&ijM7lkb zDFLhY{uQqG;NfxedzyIrJPb>T;PJu zw1>4fJ*Di58{f^@anzU9#QQnEtMmR~yH&%raia4_cp;XdcSj^3%RbS`Any7+>hfWs zrUl~qGlCua9eKtWQAkh}d}GA4uEpnPV3ktT*;5}X#LI^QFfOyY_g$9Y&zioEh-fn9 zc;wkZ!2;8~@~eRogxh#T@qZ~xRVwPy))^XW~mW$`ye}TUY-c+$_wZC80 z=tlE}-9wwY+>&IW8#yXxa!u!kDJFe-2toN7oGvE*?`KlC&uRYxk%{+K3<%nr{f>?l zK{Z-3NP~mvu7V3wMDZiPqr`O4InP9S)}xy8lP9k z>Utm^kO+3Ah|_}6&7zQd4|{3KD%<_7hA~?RkTS37;Pqm_gHjYnZ!#GYPvA-;4pSH}RZFV81u*+hid zxE!jDex_6@jV8NfjqHS&hudJB9(OE2oXk2dg|h&XjqGeT+mp3YY%H38WHd5T^jOu0 zN@yGO^=Eqz%5;I;4^X#8>N+caA>9Eaa;y~QQ=ON5({vREyFN#LOpSjsxPggK5UpY} z{_3^s(D<6=1zL6Eb24?K2DkyrD5yl|7vNXImLvN{!txJ1Z-;(`R_~Uj`Mu zUOduw`ly|@K-8lo+l()_|;VgD`W5~H4;Ic>t z?dI@SGTt4;EkEovK@*cPkDiZL_)s89lW-)EAN79;pk9W?F58#8*5z z8_s^6q>SQod{7A4?>pU5J6i6TuLxFuM%KU1KSG3dt@Tf9xaw(p2{qIW!;$*{YP-<&PA@KxGZAwwi=yR%-W zFemfcY)w_T=&$|#lboI|X{dYW)Jdi6vdq6&vcE~>wRERsrgHYl^P-!|&|q!QFIF5Y z8bACn$QfG7)&eiCaR9#t-l2`!}m#qCqRHL!D$cl7xC8%y^&N>qAW3t_2 zF;?^HfU$3Uwf|VOBl94S4&>7QQ<+5NDl4d$hOT3jKHeJqny-Eb-M24;5Q>e7@8}3E zzsf=H@MgbFjDpb>~5(+_Ak z8j;8tijS-o`H)$F=2TLqxSpI#!Od<{QrKx#^`1T<6k?{^8^6!&Ou*%qI=pkHpAQP(%N!t3&|SK+UkfvD?dr&?m} zQCP2<1=l`&srZGPpwfpv|NZX!-~L4uY{qmFsFc3SYv9LFv%W%=xD5Fe3l5#tSLKWf zUseU*nBqx8GxvIFz*=;lJhFLR`sU!6?G5SZX&F2#ujujU&FOpVI#@Ed=NSlTg1PCL zQVQOGu^EoskddU(3+vg7#-?2vp`5bR?T>7tG3a;BVNPB;!4E4hbad08s+vUuw~Azp z6B1T8wfw&S%R#d2efL8V-HmNll?;WH}KkjBGf-R!8BI$G~+ca23B9CMf8sNgjl<|}H|Gxcv4!J(+^ zUx8QS3OD0#o!GNjpI!Vq!AaR+MAjeK=L6vy_!Cl>;clPAoSaVHqPo)+%0x-xuh015 zv;ZLTd*`C(wq7(!@h%qM<85sYO~kmAcyrs-pYf%`mcNKThx!khU+fMU&bN$H=>@~R z=QX#-CZvp_k{>v5x1<7tSgB2p580h9q#NnSX<2xW0;>bx)TU{HG(au9Yx!48O=c?} z7L`4e4_+!QOeF86U-7L&f!u+^?VGht^q7LMCmx!UH_9~5DEd#Zy zz8Y^rMO8tRLj|=@ePZ?n?{&) zBSVLBvp-D+ZMJW*nn`>l>=Ww;@hcvI-Jec#wfvK*9yzWUZ?$Xr`uw7ByqI7wO>t+c zImxXN4dtYEO|$MK^>)@fB~L5wOXpi42aC&60A{XMROvIDypstiH=bm&4$%93Rzf+a z-A~sDxth9a?6&xHc^SxG$I+E8MM<=XG@Q8M9g0$Ku`I>|rV<@=m;dydQPXbi&wyBv zdnoBXDzXgWiljk~O3rI?4c*zU8e4Zj<4W{q(i!bh{Aei80v<(8U#5nV%-XSht-+5h ztfw{AT_cku%4)HK)XcmtymcxPvbqXf1J1dOYW>8V9x!6OfmCjv3}R&=%h65>ZUlm! z<@RPONg?%TP{sUvEqTG^(JO7G2`vi?^J#J5g$^C)mN2`Q4TN4$Ual%eOTyPKVASq!GtnXXk51A+h_utRPRVTkwMC zch>Xj+|R!dzyF)C0Gz`D)V+|#+quv2zv3g&5O9&{AgQS>N~sPn9NV1OA9Z~cR%DDA zm^nhj0dO0)bARVI^9w%;0!15V{^I7DXqM7`sH;eg2gypNlpLlOCIqF#B0x&D>9il; zq80~LMA|^;vH*y+imW-q=GW_m2$X#CP)_A=QHe8RXVVl#3)Y34fdjPna>tBNH zoM3&eUz1@w^0Y#?-P+Pg;m;U>0%bX=OZgoelFDa=bCgGNzWLONh62MvHX7|^r}bK0 zo(5evmy&1YfX_!!eV!AP`*7oCdgcw7Hr@`rWb&(0LO5#`*0!AWJEBtWR3eacV}YV>O18F9RicIYYlnLKZfza23s$AorzK8o6fo@4nUv>JU}55f3O2vX zIQwa^VKPQ|DwvEKvqW6(cEO2TFKo-8BNlUJTi1%kc}u?3eP*QkZ(O;1M;%}BuO^#F zs1=d&kFCr(9x$W;v#-bSSIldu#;+wEJ}mwbT}vobtRd=Tg{KJF7s~K|HP?2crfTEZ+vS~C26kft8tGJSF;jjNobU5ak@zz1i1d*( z?ddKTEg`rx?&Bf6Z>mOva9?Y^de{1n@}(0@Hv}zq$973Ij|i#x7~5!`FQ_|7ZYybD ztc0q9BfvXjU zB0TMj!+1@!L~c7)&Vsj%Oy^3mqpr1+HcfzTfAX>l0JXp5f1cKZI65C18@?#e^J(8x z{@bNlRNL59j8vcNk+`f8WR1G0WBMr<@n?Qe^Xfl4+wHJAz8Dz8oro;F2i_gs$@Im6 zvTh^#2O5RDcn?0co6|-uqrwpFqG)PFvjW$Tx}o1P1vIpou-$LE=wUKgimI>r2!??5 z$uolhMXaE+h5V2r9D)pmYGn+hrN`y0Mm%BSmoQY}$Y;KRV1UX}P*NedH^x-xl7 zR<(QTx*56i4q5SW(*bnU) zG@b=@+?Zgb5aOOO*k*iJ;lkkQoewc}zu56jJHP4FGZ9+&<=T3#OlGG&lKQ+C!g70% z#p)2}mSs4Z3Dv2DISMDefE zUye=7OjuUG=s(Ned`E%j)8DW6xi@1&SRK>9JdCSpD!31($YQ7dAM!s#Jwr@Z4~_b5 z%@Rwm?+xhqYF|xPT97=TB(k-V%N2zbZ3y2pX6;Y_<0pvS0W|T!C|W zjcOe=C0g5{NxSbsX|4oX@=J-%gvp$`dW!ZSf+vu8(9EP3Z-s|TJ>l%6rhbY4q;B1a zdW^1@9qQNu!L)gjYOJQXh7%`d35drcVd@3p-ASBc09gg4p%*9aOnk)BWD3tXJJ)4m?JXYW?&RlY*k}us6 zV*9k;w&EC`%nH%%hbEQdPMPzUcM4=nV@CDFoEZDK3ODMV!kmT~6j^h5+5_V-T9VI_ zhB9W&5+`ER*wjl4U5II?M|7u=gJc%TYRuMC`czKe)#c*LUBb%^0!A$|%N_H|t7?5% zgOFB>x>N^7pKGbP{u)hvb#uXd5=Y^6!I~nhdQ%kvB)QV zh}~}@zVVIy#yeQEH5O452H5rK-M}1{<4+CBBECqcpCEuB|S-PqG1F)k!nVD3o z1?C#FInoAfDNF{JJv76Veg;kJOm@}KW|Ha7ckLy5XJ|8xj|j}SWQPl1-1GBS1ss`1 z+K?23PRa>gF?g%JiX%7Wz4&W#!}CVc_&f3?Z4dk}-CRMURd&Ri1(9-#J#B6G9@aM; zRW_6=dq=|55NG#<8?3R7qjm{cOXBgCA;nZ#u&M(`5c2$hJG*6PV(78Y5~OE zJt949plzzBl)l+sDZ*)U{?i)sm*N-1t%->6bSjZE(Wj$!ouc}U}on5{3^&d4@ z-xJ+UsYMHOxQ4Q?C=| z+xD2rouj#=i?)1GBeLxSHEM{Dam+!8SBsBL%#ABE#l>6o@n3)_Z1B_IXMj@V`Pqbz zhzK8xDaj^t$<0`S*XIt>qWfF@eMW?!h%iU?>va(kU~iE{@a_55JEJVP>D1w;C8w{}@XL_VKHk8f^Heem%9r(Y?zsuv>Vaq#Ee+;!C1>}m_l z%l#w$tgE9L2#uY2eLS+(@WJBZ_@m{&zxswt)LgBSvyN-}BK+0b`|zFVVKyw*pF}z~ z+k+WWSmT7mB$j3aGALeB2mH0!0h=H67MAoz`r+t&*VEMvotla5)Zx0ox?1V2x^VAY z!4R#c@YTV2LbqaP?XAmGe>yn3Ezw;$C~L#p#-w7u?{HollRm%Gv~C~BTNSJJfrP)V zI5b|KgukZR4;-HEfoQ=p)L9!0x3&fXJ2S%NNt+ux65SfzoLs!QcM1;6$^@F5Vc(C_ z-Q6^}*D6bpbu)>O#=>BL)|`WWe_dIbKgttL%b7lxs9 zwdLeo9K+q?0c*)lx!EDQIF{i|9th*-SN}7VgO25rP*+tKEa81ewl{3y=7ojki4GLe z?`n)v)dUdLwzNmARP-I%3|W|ZzZ$W=NHK~Zk6VN^HWHPr?j~Fb^Q*$4Ib2GkRU4>% z0p%O-HD)(v8d&x5SNMT#u}9>n`~^R;R6&JT|$gPpro$=oPl` zS9`E9NgV4&!y&&daEz62B!e~SPR|`MLY6icz7vdG z4}UUDryROseTE4D!Xyla4$GA{w0)`21mjbZDS9fm-5YsmxkLeJb35kMox%b4y=HP7 zxC~K>**qel8!0rvJet^#P#H02Tmsn=9y7DQ&}1cVPp-buvjkdNRWgF2*ON@9xQy~K zo;7D?BVY?Vx*k-Zm7#_liAHFN`T*@j4D_3a4Th~OBZkF$5It8~x}2MmK>MC$eG$z> zDz$ZT{LoJ^!T=B8g%AA=L;hd&AWvMih%?AuJA37OSP@B4*HcMRNOD#+4 zbv8$WIG8rS|N2#tN<3Xq@SP}Gp?$RGHDP&}lFCjcgHUjHwRWi)ybN?~{bR#2&cj+M zwsA6F8PP;1lDZ$LzOPnbgvj9&j_;2kOP$gm-cTFDRHUL85)%$XE?szON9=K!OF-bk6=dB^Yef>U9_%;E4sm0U6*OAIV?Q_pvLV1G;W zn;zq%hy?{S9=exl!RB?lW4YgXf*;u`-?X{M?e4)JVI0>py`1!dF{r6uYz9LMd&kpj zRVW)Wj+})He4s2Nm>^fH|0)m&{5M`xxJN_#ha9du(k0my-dw=|FYo4uFk1cE^)@8i zWA$)Qn^(o1Peam8u)(ce4ZYiq;>J|p)GmhGXVo%lg);i@MHVc>S?x#@n-@EQv)8Gx zy*YiuV|`cfRE3hw=#80t4kgh+0KYoL9|XER)|@*y7oI-X*3PfF2akJ0*=Y9GA!jxj zAmBZ7X;q0`;3bLEgt)f>cOA(#a6I=cv?spJjepu4E4VDblqpzv#M3?a?g z?M5-T$L<|EY{E^IlR8Nz8>mOqCvJ@=3OM#b6g%NqFb-UJrmY`jYG*2=C(=Y8cKR2h-P^38*yA{=A)bN%}wTW-!Vn~a9Y#-JtwosZzm%A zdx=Dc$mawvPqmG0F|}%X!7y>1cuFO(_J5L4xVpPL2hRGyKEBax;e+bYv8-=B`;m#N z$Y4Mv1LgS&toYo)!a(y~cs$Cy-qv_fu#D?g2q*sWkZ}aj1-C!r<;$YYd?s#*7U?>z z6P@iKq))JAf`a@{iKi$VPg`xr-_RX!#=OdI*S-RKFxASS>rBj+aW?Oy-yB-Tt#Jo8 zz2HhpI%341OmxO;);Nv4?^*NB;?I0`G<0wBzD6{sX1+k%#9Zz;sAV`JsEdKEX@CnK zQScft?$+m2&nCCEoHg;+*c{E{OsR>sX^!M#f(4~5{3tc+r}Fa4Z52D&0p!B#B2rmC zh`G7=m8mEVW%s>ve%Dkax;1tat0W`+lw#L$JYbg-a(I7KG>0$&8C^XX`8SY1nsngAyzoFwiA<%-g!L?Q30v|1$i zna%zu_C-K!F6rr*J@}`REC<7WZzPBW@In^qnh!K{0EVMuW$a13k4kP_Ouj2{jEO)K zy!aindy~~bY&;%T43pM6xF^G~pJ>~GKs-|usoYH3SdtGBS-f8~ZRCu8lVAK8O(8WE zi|_m&w$3W3%`V{9Uul8j#fudUF2x;MoZ#**DaE0UoEV#QvaP8rr zIdg8#f0y?nlbg)Ed)9u|v-Ycku$Y>(&28=E>*nyys{0fy@MJf>sBWP-eQe>E)tH`aWYqPi^D%<GVG@0=<0fxbc-5Piqj`5^Shcw z&i_kKIThG{d+vnQH_)Sk+%CK*Xklg+6_T8PjJjIT;)BoV&agOZWY^B2WllEY`&Qls zqi403!a#xFu))~e1S!HDn|@7L6ZvStpf!GTy$~q`%eqOIWn)~aa3$S+KJBAs4Wy?x zUGdBb&rtIHj1S%x9%GZ@4b#Ge&NkgNDYFl-M!c$SO$3pqeAu>G?3&NhoxKBjDYJX0 zCy>DGOVsjU@!6%@x{S@+LUuOOvDA?f>!oMA0A5{H1T8GTxt4W0*MqPz&hP|@YZ`=hj83L5dgkv+h6Xl^k?=tkM>G8D4@ubo; zG2v{I3FTyGG7H=9iqT-?XL;CS8S|*X`0WA{DOLDWuhkW;vR~sO889$QVqaR&)$DEhYpXY^hj~=wx4`U zQbs;zQ*pPVTaF+K5IyOUc+s>R54h5vL|`ZSK?jv z-%ZBbtJkBVHl=LJ5NeGGEV&Q4t~doHyz}1a59d#X>o*lZC#t#M)FXr1*JY)--zDlQ z*_cQNmNE;`-(%D_(0skQBuAYz0)ZB#LuIp0()UV>6|TyczRFfd<)GWpuIa0E7RGMd zXwyynjW?|TtVmtyPxT&O6itWRh zdzu*SMfzLpCy?9wQ}Eg2xCTK_@JBj=)TgL=zt zuYwAOGz)R*5k(@gqWN_}qvNoK{02hK*~IvRsiFiKC&A2IS?_;aCj- zV>si?7zse1{8Acaf_GHXPAEJCs|P ziW#TMGCv~G>sX+y1x#IOFoa9lHu;)y%7m#s+U21wqq1Dz*fJJJtx`HCG}ueFoZ5wj z8&M)RZdvmuF|f{sXjYR`RZYUoE;Q?COLs=IZ&h&o*r>!8)Lb9X5;05BXo)<^uWL>e zC6u8%uidBXhUSJi;nq*;b4(pvzjRynb7n8zo2}P6tUPeAw0Gp~7ywLJQ^*o|)S4CO zJumsIs4=k}EEI(H#}lT=B?fTO7l}RjM51mLKW-e5t9Ux0`>#4n$ynlMrUgYAR3u$U zS{%d`+mbstI13#7s!2Z`+-A5ExhN5w&TZ)3C$TLO%io&pGI&O<01bA%RDyan#dB08 zPF|p)s4satfn7G9>(zWBck$X-f2xpfUPi+i{#p0Wgn@o%=1KBTYaySDo|}L@cR9IV z%7Q`vq5uKj!vxb8M7knYuwZeOtp)M%_FKvStseZ(`Tytsj3uqvW=VK83$<0j`pQb) zgpD>5Ogl3SI_jCKGHyU*Et1!OE=eQPSi()cG^w(H1`>=8<%r?P7if|LATMj@{p`hy zWKv<)476FefNTS{!3;YD-MYp=F+rvfOTZ48JXt~A5<6n!UMg(o14+s=

    =YT~x_m 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

    Mz3l5-Ll7J#(XFCDEYs`PJD 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%0AA5D`USsJ0)O?8@3cBVHksfGT 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�yX*SE9;p-erKifB(X3Gk=6 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

    2|GN>~uD%d3Rgk*cC)*nt2BNBF&@$xnlhb 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

    #LTOl)`6O z>;AKN#v+ijLEd)9v^6pN3bfHFx)Q5&gQS2M5hkL2Bl>VsbVR)*^iXFT<*3|L78`w9 z$v#QB%&BTVuzyN&rF~P>3B@6kpOLlvPDUZE;CIuXbGhVtcPmWX>@)T!kGq2Dc5PX1 z#J9FXLZI4IVROViEwWlbwGmX5M>Zt0l|@FqU;qciegcqNy_Ge{c2#!wo9&aH|MWSp zYCoe=4jaa>H_KT1LjsiiRSdQ%B_ySC!BEBNbxL(EAsNuj7frp}IJrMY(jV%-?M6-W zdaBtL4R4Xd-^#XpoNQH@XKR7zaJqWD3lySXzNxWwS_=5a8Y~`oN~9a%)9y-e!G|RO zF8!sxP&=eT(;~K|ct2%wf5gq4N!RlYS!+4^@~fKfLA&d8ZG-f)2GvK)nk4l1-jU3o z@PhA*2GSBd;P+TlW6oEG8#CBhVpiD?9uHP!QaaltU%M1PWN_TShT#{!0NkBK2h3F1o7%`l^ zd_HG&)3h!(yZte;E{E?cw*H2($5Q%-tXgWAB)8JG{n>!s!L+2M?}EjjIH(6olYA^t zVmm*3NQ5@^Eot3X%icO;+u`GO|7i&Ug54zTzKobuB)$m%tqW?WF5Tf zB`oF=5B8iB{je7QMWDfJBhjVMrK%}RpYgpj7mb#w?dUdFC>sh4hgt~WK?G+t;!5

    Q7p`PSRCyGVjE_#BM#cg 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 literal 0 HcmV?d00001 From 6c1c59b96ec60cce7ce14927c308ad0739604d99 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Mon, 15 Aug 2022 09:11:30 +0100 Subject: [PATCH 033/275] feat: add chanset Signed-off-by: Alisson Fabiano --- .changeset/weak-yaks-learn.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/weak-yaks-learn.md diff --git a/.changeset/weak-yaks-learn.md b/.changeset/weak-yaks-learn.md new file mode 100644 index 0000000000..dfbc256af1 --- /dev/null +++ b/.changeset/weak-yaks-learn.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-azure-devops-common': patch +--- + +Added README card for Azure Devops From 90b89582046d80ca702e99b6cd9fd1a2fee9e1bc Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Mon, 15 Aug 2022 11:03:41 +0100 Subject: [PATCH 034/275] fix: rename readme card file Signed-off-by: Alisson Fabiano --- .../{ReadMeCard/ReadMeCard.tsx => ReadmeCard/ReadmeCard.tsx} | 0 .../src/components/{ReadMeCard => ReadmeCard}/index.ts | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename plugins/azure-devops/src/components/{ReadMeCard/ReadMeCard.tsx => ReadmeCard/ReadmeCard.tsx} (100%) rename plugins/azure-devops/src/components/{ReadMeCard => ReadmeCard}/index.ts (100%) diff --git a/plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx b/plugins/azure-devops/src/components/ReadmeCard/ReadmeCard.tsx similarity index 100% rename from plugins/azure-devops/src/components/ReadMeCard/ReadMeCard.tsx rename to plugins/azure-devops/src/components/ReadmeCard/ReadmeCard.tsx diff --git a/plugins/azure-devops/src/components/ReadMeCard/index.ts b/plugins/azure-devops/src/components/ReadmeCard/index.ts similarity index 100% rename from plugins/azure-devops/src/components/ReadMeCard/index.ts rename to plugins/azure-devops/src/components/ReadmeCard/index.ts From 0cec11b6e8dfdf25ea7adc52db68e22c2c25ff58 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Mon, 15 Aug 2022 13:19:20 +0100 Subject: [PATCH 035/275] docs: add api-reports Signed-off-by: Alisson Fabiano --- plugins/azure-devops-backend/api-report.md | 13 ++++++++++++- plugins/azure-devops-common/api-report.md | 20 ++++++++++++++++++++ plugins/azure-devops/api-report.md | 13 +++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/plugins/azure-devops-backend/api-report.md b/plugins/azure-devops-backend/api-report.md index eaebea4d7b..a50119cc81 100644 --- a/plugins/azure-devops-backend/api-report.md +++ b/plugins/azure-devops-backend/api-report.md @@ -18,13 +18,14 @@ import { PullRequestOptions } from '@backstage/plugin-azure-devops-common'; import { RepoBuild } from '@backstage/plugin-azure-devops-common'; import { Team } from '@backstage/plugin-azure-devops-common'; import { TeamMember } from '@backstage/plugin-azure-devops-common'; +import { UrlReader } from '@backstage/backend-common'; import { WebApi } from 'azure-devops-node-api'; // Warning: (ae-missing-release-tag) "AzureDevOpsApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export class AzureDevOpsApi { - constructor(logger: Logger, webApi: WebApi); + constructor(logger: Logger, webApi: WebApi, urlReader: UrlReader); // (undocumented) getAllTeams(): Promise; // (undocumented) @@ -73,6 +74,16 @@ export class AzureDevOpsApi { options: PullRequestOptions, ): Promise; // (undocumented) + getReadme( + host: string, + organization: string, + projectName: string, + repoName: string, + ): Promise<{ + url: string; + content: string; + }>; + // (undocumented) getRepoBuilds( projectName: string, repoName: string, diff --git a/plugins/azure-devops-common/api-report.md b/plugins/azure-devops-common/api-report.md index 34d911dac6..9e700e2c36 100644 --- a/plugins/azure-devops-common/api-report.md +++ b/plugins/azure-devops-common/api-report.md @@ -229,6 +229,26 @@ export enum PullRequestVoteStatus { WaitingForAuthor = -5, } +// Warning: (ae-missing-release-tag) "Readme" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface Readme { + // (undocumented) + content: string; + // (undocumented) + url: string; +} + +// Warning: (ae-missing-release-tag) "ReadmeConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ReadmeConfig { + // (undocumented) + project: string; + // (undocumented) + repo: string; +} + // Warning: (ae-missing-release-tag) "RepoBuild" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) diff --git a/plugins/azure-devops/api-report.md b/plugins/azure-devops/api-report.md index 0fe600f15d..72d32f5b34 100644 --- a/plugins/azure-devops/api-report.md +++ b/plugins/azure-devops/api-report.md @@ -16,6 +16,8 @@ import { GitTag } from '@backstage/plugin-azure-devops-common'; import { IdentityApi } from '@backstage/core-plugin-api'; import { PullRequest } from '@backstage/plugin-azure-devops-common'; import { PullRequestOptions } from '@backstage/plugin-azure-devops-common'; +import { Readme } from '@backstage/plugin-azure-devops-common'; +import { ReadmeConfig } from '@backstage/plugin-azure-devops-common'; import { RepoBuild } from '@backstage/plugin-azure-devops-common'; import { RepoBuildOptions } from '@backstage/plugin-azure-devops-common'; import { SvgIconProps } from '@material-ui/core'; @@ -101,6 +103,8 @@ export interface AzureDevOpsApi { items: PullRequest[]; }>; // (undocumented) + getReadme(opts: ReadmeConfig): Promise; + // (undocumented) getRepoBuilds( projectName: string, repoName: string, @@ -156,6 +160,8 @@ export class AzureDevOpsClient implements AzureDevOpsApi { items: PullRequest[]; }>; // (undocumented) + getReadme: (opts: ReadmeConfig) => Promise; + // (undocumented) getRepoBuilds( projectName: string, repoName: string, @@ -271,6 +277,13 @@ export const EntityAzurePullRequestsContent: ({ defaultLimit?: number | undefined; }) => JSX.Element; +// Warning: (ae-missing-release-tag) "EntityAzureReadmeCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const EntityAzureReadmeCard: (props: { + maxHeight?: number | undefined; +}) => JSX.Element; + // Warning: (ae-missing-release-tag) "Filter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) From 6b6f4bc15ab9d452738da76139195658fee6f031 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 15:03:33 +0000 Subject: [PATCH 036/275] fix(deps): update dependency octokit to v2.0.7 Signed-off-by: Renovate Bot --- yarn.lock | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/yarn.lock b/yarn.lock index 872925cd83..e968410c10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5664,11 +5664,6 @@ resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== -"@octokit/openapi-types@^12.4.0": - version "12.4.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.4.0.tgz#fd8bf5db72bd566c5ba2cb76754512a9ebe66e71" - integrity sha512-Npcb7Pv30b33U04jvcD7l75yLU0mxhuX2Xqrn51YyZ5WTkF04bpbxLaZ6GcaTqu03WZQHoO/Gbfp95NGRueDUA== - "@octokit/openapi-types@^13.0.0": version "13.0.1" resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.0.1.tgz#f655810f0dc0547b771526fea171acffbc7bd4a8" @@ -5837,13 +5832,6 @@ dependencies: "@octokit/openapi-types" "^11.2.0" -"@octokit/types@^6.35.0": - version "6.37.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.37.0.tgz#32eb78edb34cf5cea4ba5753ab8db75b776d617a" - integrity sha512-BXWQhFKRkjX4dVW5L2oYa0hzWOAqsEsujXsQLSdepPoDZfYdubrD1KDGpyNldGXtR8QM/WezDcxcIN1UKJMGPA== - dependencies: - "@octokit/openapi-types" "^12.4.0" - "@octokit/types@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-7.0.0.tgz#3ecee92edff53a93ecd75d6b9d6620574d2048ca" @@ -20104,18 +20092,18 @@ octokit-plugin-create-pull-request@^3.10.0: "@octokit/types" "^6.8.2" octokit@^2.0.0, octokit@^2.0.4: - version "2.0.5" - resolved "https://registry.npmjs.org/octokit/-/octokit-2.0.5.tgz#4091813187f363eff787b89b66aafc273ba3318d" - integrity sha512-Znv9zxhKxl9C11QsAK/RRoIutAsHawVrYplZNf7IqpB+mi3Zu0zBfZ5sFUqMRwemucff+MDHh1RtlpF5946UDA== + version "2.0.7" + resolved "https://registry.npmjs.org/octokit/-/octokit-2.0.7.tgz#7e6658ddcca234d8cc6ca9344403b516d3b2d136" + integrity sha512-Rf+pY3fCphmS4jjLqQ+D0xS1U+Ry/pAZHLJNvsQksuj4aopl7qFLlV4Id2KIlaUpKZrUCPzOkLiZOaoEb47RZQ== dependencies: "@octokit/app" "^13.0.5" "@octokit/core" "^4.0.4" "@octokit/oauth-app" "^4.0.6" - "@octokit/plugin-paginate-rest" "^3.0.0" + "@octokit/plugin-paginate-rest" "^4.0.0" "@octokit/plugin-rest-endpoint-methods" "^6.0.0" "@octokit/plugin-retry" "^3.0.9" "@octokit/plugin-throttling" "^4.0.1" - "@octokit/types" "^6.35.0" + "@octokit/types" "^7.0.0" oidc-token-hash@^5.0.1: version "5.0.1" From ad9ff7194bdbe3c74a48c6b6bf75723df5ced853 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Mon, 15 Aug 2022 10:38:37 -0700 Subject: [PATCH 037/275] fix: update docs for changes to synthetics annotation Signed-off-by: Isaiah Thiessen --- plugins/dynatrace/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/dynatrace/README.md b/plugins/dynatrace/README.md index 2f5d30b88a..8ed72ebb5d 100644 --- a/plugins/dynatrace/README.md +++ b/plugins/dynatrace/README.md @@ -62,11 +62,11 @@ To show recent results from a Synthetic Monitor, add the following annotation to # [...] metadata: annotations: - dynatrace.com/dynatrace-synthetics-ids: SYNTHETIC_ID, SYNTHETIC_ID_2, ... + dynatrace.com/synthetics-ids: SYNTHETIC_ID, SYNTHETIC_ID_2, ... # [...] ``` -The annotation can also contain a comma separated list of Synthetic Ids to surface details for multiple monitors! +The annotation can also contain a comma or space separated list of Synthetic Ids to surface details for multiple monitors! The `SYNTHETIC_ID` can be found in Dynatrace by browsing to the Synthetic monitor. It will be located in the browser address bar in the resource path - `https://example.dynatrace.com/ui/http-monitor/HTTP_CHECK-1234` for an Http check, or `https://example.dynatrace.com/ui/browser-monitor/SYNTHETIC_TEST-1234` for a browser clickpath. From ab6650ede9ef7438af09e99209a37e7eb19900d8 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Mon, 15 Aug 2022 15:27:21 -0500 Subject: [PATCH 038/275] Added edit button to UserProfileCard Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/lucky-points-wash.md | 5 ++ .../UserProfileCard/UserProfileCard.test.tsx | 83 +++++++++++++++++++ .../User/UserProfileCard/UserProfileCard.tsx | 27 +++++- 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 .changeset/lucky-points-wash.md diff --git a/.changeset/lucky-points-wash.md b/.changeset/lucky-points-wash.md new file mode 100644 index 0000000000..961c354574 --- /dev/null +++ b/.changeset/lucky-points-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Added an edit button to the `UserProfileCard` that is enabled when the `backstage.io/edit-url` is present, this matches how the `GroupProfileCard` works diff --git a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx index 68e9715b06..acbd13703b 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx @@ -73,3 +73,86 @@ describe('UserSummary Test', () => { expect(rendered.getByText('Super awesome human')).toBeInTheDocument(); }); }); + +describe('Edit Button', () => { + it('Should default to disabled', async () => { + const userEntity: UserEntity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'User', + metadata: { + name: 'calum.leavy', + description: 'Super awesome human', + }, + spec: { + profile: { + displayName: 'Calum Leavy', + email: 'calum-leavy@example.com', + }, + memberOf: ['ExampleGroup'], + }, + relations: [ + { + type: 'memberOf', + targetRef: 'group:default/examplegroup', + }, + ], + }; + + const rendered = await renderWithEffects( + wrapInTestApp( + + + , + { + mountedRoutes: { + '/catalog/:namespace/:kind/:name': entityRouteRef, + }, + }, + ), + ); + + expect(rendered.getByRole('button')).toBeDisabled(); + }); + + it('Should be enabled when edit URL annotation is present', async () => { + const annotations: Record = { + 'backstage.io/edit-url': 'https://example.com/user.yaml', + }; + const userEntity: UserEntity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'User', + metadata: { + name: 'calum.leavy', + description: 'Super awesome human', + annotations, + }, + spec: { + profile: { + displayName: 'Calum Leavy', + email: 'calum-leavy@example.com', + }, + memberOf: ['ExampleGroup'], + }, + relations: [ + { + type: 'memberOf', + targetRef: 'group:default/examplegroup', + }, + ], + }; + + const rendered = await renderWithEffects( + wrapInTestApp( + + + , + { + mountedRoutes: { + '/catalog/:namespace/:kind/:name': entityRouteRef, + }, + }, + ), + ); + expect(rendered.getByRole('button')).toBeEnabled(); + }); +}); diff --git a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx index 148fb03d19..39565d99d5 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx @@ -14,7 +14,11 @@ * limitations under the License. */ -import { RELATION_MEMBER_OF, UserEntity } from '@backstage/catalog-model'; +import { + RELATION_MEMBER_OF, + UserEntity, + ANNOTATION_EDIT_URL, +} from '@backstage/catalog-model'; import { EntityRefLinks, getEntityRelations, @@ -23,12 +27,14 @@ import { import { Box, Grid, + IconButton, List, ListItem, ListItemIcon, ListItemText, Tooltip, } from '@material-ui/core'; +import EditIcon from '@material-ui/icons/Edit'; import EmailIcon from '@material-ui/icons/Email'; import GroupIcon from '@material-ui/icons/Group'; import PersonIcon from '@material-ui/icons/Person'; @@ -56,6 +62,9 @@ export const UserProfileCard = (props: { variant?: InfoCardVariants }) => { return User not found; } + const entityMetadataEditUrl = + user.metadata.annotations?.[ANNOTATION_EDIT_URL]; + const { metadata: { name: metaName, description }, spec: { profile }, @@ -66,11 +75,27 @@ export const UserProfileCard = (props: { variant?: InfoCardVariants }) => { kind: 'Group', }); + const infoCardAction = entityMetadataEditUrl ? ( + + + + ) : ( + + + + ); + return ( } subheader={description} variant={props.variant} + action={infoCardAction} > From 9f071f3c4d1046d5b37e98c304cda4bda1ab8eb1 Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Tue, 16 Aug 2022 15:05:17 +0200 Subject: [PATCH 039/275] feat: add homepage to github:publish options Signed-off-by: Leon van Ginneken --- .../src/scaffolder/actions/builtin/github/helpers.ts | 3 +++ .../src/scaffolder/actions/builtin/github/inputProperties.ts | 5 +++++ .../src/scaffolder/actions/builtin/publish/github.ts | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts index b60794295a..fd3899b18a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -97,6 +97,7 @@ export async function createGithubRepoWithCollaboratorsAndTopics( owner: string, repoVisibility: 'private' | 'internal' | 'public', description: string | undefined, + homepage: string | undefined, deleteBranchOnMerge: boolean, allowMergeCommit: boolean, allowSquashMerge: boolean, @@ -138,6 +139,7 @@ export async function createGithubRepoWithCollaboratorsAndTopics( allow_merge_commit: allowMergeCommit, allow_squash_merge: allowSquashMerge, allow_rebase_merge: allowRebaseMerge, + homepage: homepage, }) : client.rest.repos.createForAuthenticatedUser({ name: repo, @@ -147,6 +149,7 @@ export async function createGithubRepoWithCollaboratorsAndTopics( allow_merge_commit: allowMergeCommit, allow_squash_merge: allowSquashMerge, allow_rebase_merge: allowRebaseMerge, + homepage: homepage, }); let newRepo; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts index b0113a4485..153b2e6941 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts @@ -23,6 +23,10 @@ const description = { title: 'Repository Description', type: 'string', }; +const homepage = { + title: 'Repository Homepage', + type: 'string', +}; const access = { title: 'Repository Access', description: `Sets an admin collaborator on the repository. Can either be a user reference different from 'owner' in 'repoUrl' or team reference, eg. 'org/team-name'`, @@ -156,6 +160,7 @@ export { description }; export { gitAuthorEmail }; export { gitAuthorName }; export { gitCommitMessage }; +export { homepage }; export { protectDefaultBranch }; export { protectEnforceAdmins }; export { repoUrl }; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts index eea006ae8f..8ce9105237 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -45,6 +45,7 @@ export function createPublishGithubAction(options: { return createTemplateAction<{ repoUrl: string; description?: string; + homepage?: string; access?: string; defaultBranch?: string; protectDefaultBranch?: boolean; @@ -88,6 +89,7 @@ export function createPublishGithubAction(options: { properties: { repoUrl: inputProps.repoUrl, description: inputProps.description, + homepage: inputProps.homepage, access: inputProps.access, requireCodeOwnerReviews: inputProps.requireCodeOwnerReviews, requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts, @@ -120,6 +122,7 @@ export function createPublishGithubAction(options: { const { repoUrl, description, + homepage, access, requireCodeOwnerReviews = false, requiredStatusCheckContexts = [], @@ -159,6 +162,7 @@ export function createPublishGithubAction(options: { owner, repoVisibility, description, + homepage, deleteBranchOnMerge, allowMergeCommit, allowSquashMerge, From 35b49f821e729b43afa4bfe23850511c59e784a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Aug 2022 13:07:53 +0000 Subject: [PATCH 040/275] chore(deps): update dependency puppeteer to v16.1.1 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a954334488..6764e6e0ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21717,9 +21717,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== puppeteer@^16.0.0: - version "16.1.0" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz#06a32dc347c94642601017fbf83e1d37379b9651" - integrity sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g== + version "16.1.1" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.1.tgz#1bb8ec3b86f755c34b913421b81e9cd2cfad3588" + integrity sha512-lBneizsNF0zi1/iog9c0ogVnvDHJG4IWpkdIAgE2oiDKhr0MJRV8JeM2xbhUwCwhDJXjjVS2TNCZdLsMp9Ojdg== dependencies: cross-fetch "3.1.5" debug "4.3.4" From 0971c10a1bd1c098308a2c89d00a3d75c7f72bee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Aug 2022 13:09:02 +0000 Subject: [PATCH 041/275] fix(deps): update dependency terser-webpack-plugin to v5.3.5 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a954334488..2d022c2034 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24857,9 +24857,9 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3: - version "5.3.4" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.4.tgz#f4d31e265883d20fda3ca9c0fc6a53f173ae62e3" - integrity sha512-SmnkUhBxLDcBfTIeaq+ZqJXLVEyXxSaNcCeSezECdKjfkMrTTnPvapBILylYwyEvHFZAn2cJ8dtiXel5XnfOfQ== + version "5.3.5" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc" + integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA== dependencies: "@jridgewell/trace-mapping" "^0.3.14" jest-worker "^27.4.5" From ea2eee9e6a65217f56202ff4f693566912b80c86 Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Tue, 16 Aug 2022 15:10:33 +0200 Subject: [PATCH 042/275] chore: changeset Signed-off-by: Leon van Ginneken --- .changeset/beige-pumas-tap.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/beige-pumas-tap.md diff --git a/.changeset/beige-pumas-tap.md b/.changeset/beige-pumas-tap.md new file mode 100644 index 0000000000..63b2fb0ec5 --- /dev/null +++ b/.changeset/beige-pumas-tap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Add the option for a homepage when using the github:publish action From 88f8c2a4068cfbe8e9ab9ea5e705545d4abf0a86 Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Tue, 16 Aug 2022 15:34:30 +0200 Subject: [PATCH 043/275] feat: add homepage option to github:repo:create Signed-off-by: Leon van Ginneken --- .../src/scaffolder/actions/builtin/github/githubRepoCreate.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts index 1e92d91a64..5bc1fa8702 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts @@ -42,6 +42,7 @@ export function createGithubRepoCreateAction(options: { return createTemplateAction<{ repoUrl: string; description?: string; + homepage?: string; access?: string; deleteBranchOnMerge?: boolean; gitAuthorName?: string; @@ -79,6 +80,7 @@ export function createGithubRepoCreateAction(options: { properties: { repoUrl: inputProps.repoUrl, description: inputProps.description, + homepage: inputProps.homepage, access: inputProps.access, requireCodeOwnerReviews: inputProps.requireCodeOwnerReviews, requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts, @@ -104,6 +106,7 @@ export function createGithubRepoCreateAction(options: { const { repoUrl, description, + homepage, access, repoVisibility = 'private', deleteBranchOnMerge = false, @@ -135,6 +138,7 @@ export function createGithubRepoCreateAction(options: { owner, repoVisibility, description, + homepage, deleteBranchOnMerge, allowMergeCommit, allowSquashMerge, From 1c6106bafbd89234282452bcdf87399a56f0ab1a Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Tue, 16 Aug 2022 15:35:03 +0200 Subject: [PATCH 044/275] test: add tests Signed-off-by: Leon van Ginneken --- .../builtin/github/githubRepoCreate.test.ts | 38 ++++++++++ .../actions/builtin/publish/github.test.ts | 71 +++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts index 0e7e907917..f7fd624865 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts @@ -129,6 +129,25 @@ describe('github:repo:create', () => { allow_rebase_merge: true, visibility: 'public', }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + homepage: 'https://example.com', + }, + }); + expect(mockOctokit.rest.repos.createInOrg).toHaveBeenCalledWith({ + description: 'description', + name: 'repo', + org: 'owner', + private: false, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, + visibility: 'public', + }); }); it('should call the githubApis with the correct values for createForAuthenticatedUser', async () => { @@ -171,6 +190,25 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + homepage: 'https://example.com', + }, + }); + expect( + mockOctokit.rest.repos.createForAuthenticatedUser, + ).toHaveBeenCalledWith({ + description: 'description', + name: 'repo', + private: false, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, + }); }); it('should add access for the team when it starts with the owner', async () => { diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts index a526e73019..eec413e2f0 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts @@ -134,6 +134,25 @@ describe('publish:github', () => { allow_rebase_merge: true, visibility: 'public', }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + homepage: 'https://example.com', + }, + }); + expect(mockOctokit.rest.repos.createInOrg).toHaveBeenCalledWith({ + description: 'description', + name: 'repo', + org: 'owner', + private: false, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, + visibility: 'public', + }); }); it('should call the githubApis with the correct values for createForAuthenticatedUser', async () => { @@ -176,6 +195,25 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + homepage: 'https://example.com', + }, + }); + expect( + mockOctokit.rest.repos.createForAuthenticatedUser, + ).toHaveBeenCalledWith({ + description: 'description', + name: 'repo', + private: false, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, + }); }); it('should call initRepoAndPush with the correct values', async () => { @@ -812,4 +850,37 @@ describe('publish:github', () => { expect(enableBranchProtectionOnDefaultRepoBranch).not.toHaveBeenCalled(); }); + + it('should add homepage when provided', async () => { + mockOctokit.rest.users.getByUsername.mockResolvedValue({ + data: { type: 'User' }, + }); + + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + data: { + clone_url: 'https://github.com/clone/url.git', + html_url: 'https://github.com/html/url', + }, + }); + + mockOctokit.rest.repos.replaceAllTopics.mockResolvedValue({ + data: { + names: ['node.js'], + }, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + topics: ['node.js'], + }, + }); + + expect(mockOctokit.rest.repos.replaceAllTopics).toHaveBeenCalledWith({ + owner: 'owner', + repo: 'repo', + names: ['node.js'], + }); + }); }); From bcd9bc0d507766d0b100735e1a93acda0b6d8bbb Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Tue, 16 Aug 2022 16:22:19 +0200 Subject: [PATCH 045/275] test: fix test Signed-off-by: Leon van Ginneken --- .../actions/builtin/github/githubRepoCreate.test.ts | 8 +++++--- .../src/scaffolder/actions/builtin/publish/github.test.ts | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts index f7fd624865..f04a735bee 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts @@ -139,14 +139,15 @@ describe('github:repo:create', () => { }); expect(mockOctokit.rest.repos.createInOrg).toHaveBeenCalledWith({ description: 'description', + homepage: 'https://example.com', name: 'repo', org: 'owner', - private: false, + private: true, delete_branch_on_merge: false, allow_squash_merge: true, allow_merge_commit: true, allow_rebase_merge: true, - visibility: 'public', + visibility: 'private', }); }); @@ -202,8 +203,9 @@ describe('github:repo:create', () => { mockOctokit.rest.repos.createForAuthenticatedUser, ).toHaveBeenCalledWith({ description: 'description', + homepage: 'https://example.com', name: 'repo', - private: false, + private: true, delete_branch_on_merge: false, allow_squash_merge: true, allow_merge_commit: true, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts index eec413e2f0..6a2665bc8d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts @@ -145,13 +145,14 @@ describe('publish:github', () => { expect(mockOctokit.rest.repos.createInOrg).toHaveBeenCalledWith({ description: 'description', name: 'repo', + homepage: 'https://example.com', org: 'owner', - private: false, + private: true, delete_branch_on_merge: false, allow_squash_merge: true, allow_merge_commit: true, allow_rebase_merge: true, - visibility: 'public', + visibility: 'private', }); }); @@ -207,8 +208,9 @@ describe('publish:github', () => { mockOctokit.rest.repos.createForAuthenticatedUser, ).toHaveBeenCalledWith({ description: 'description', + homepage: 'https://example.com', name: 'repo', - private: false, + private: true, delete_branch_on_merge: false, allow_squash_merge: true, allow_merge_commit: true, From b254e95141ad9cd1a3d16e5b94aa39f0b53e8022 Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Tue, 16 Aug 2022 16:30:01 +0200 Subject: [PATCH 046/275] chore: update api-report Signed-off-by: Leon van Ginneken --- plugins/scaffolder-backend/api-report.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 96a4d7b400..256eda0063 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -178,6 +178,7 @@ export function createGithubRepoCreateAction(options: { }): TemplateAction<{ repoUrl: string; description?: string | undefined; + homepage?: string | undefined; access?: string | undefined; deleteBranchOnMerge?: boolean | undefined; gitAuthorName?: string | undefined; @@ -187,7 +188,7 @@ export function createGithubRepoCreateAction(options: { allowMergeCommit?: boolean | undefined; requireCodeOwnerReviews?: boolean | undefined; requiredStatusCheckContexts?: string[] | undefined; - repoVisibility?: 'internal' | 'private' | 'public' | undefined; + repoVisibility?: 'public' | 'private' | 'internal' | undefined; collaborators?: | ( | { @@ -267,7 +268,7 @@ export function createPublishBitbucketAction(options: { repoUrl: string; description?: string | undefined; defaultBranch?: string | undefined; - repoVisibility?: 'private' | 'public' | undefined; + repoVisibility?: 'public' | 'private' | undefined; sourcePath?: string | undefined; enableLFS?: boolean | undefined; token?: string | undefined; @@ -284,7 +285,7 @@ export function createPublishBitbucketCloudAction(options: { repoUrl: string; description?: string | undefined; defaultBranch?: string | undefined; - repoVisibility?: 'private' | 'public' | undefined; + repoVisibility?: 'public' | 'private' | undefined; sourcePath?: string | undefined; token?: string | undefined; }>; @@ -297,7 +298,7 @@ export function createPublishBitbucketServerAction(options: { repoUrl: string; description?: string | undefined; defaultBranch?: string | undefined; - repoVisibility?: 'private' | 'public' | undefined; + repoVisibility?: 'public' | 'private' | undefined; sourcePath?: string | undefined; enableLFS?: boolean | undefined; token?: string | undefined; @@ -343,6 +344,7 @@ export function createPublishGithubAction(options: { }): TemplateAction<{ repoUrl: string; description?: string | undefined; + homepage?: string | undefined; access?: string | undefined; defaultBranch?: string | undefined; protectDefaultBranch?: boolean | undefined; @@ -357,7 +359,7 @@ export function createPublishGithubAction(options: { sourcePath?: string | undefined; requireCodeOwnerReviews?: boolean | undefined; requiredStatusCheckContexts?: string[] | undefined; - repoVisibility?: 'internal' | 'private' | 'public' | undefined; + repoVisibility?: 'public' | 'private' | 'internal' | undefined; collaborators?: | ( | { @@ -403,7 +405,7 @@ export function createPublishGitlabAction(options: { }): TemplateAction<{ repoUrl: string; defaultBranch?: string | undefined; - repoVisibility?: 'internal' | 'private' | 'public' | undefined; + repoVisibility?: 'public' | 'private' | 'internal' | undefined; sourcePath?: string | undefined; token?: string | undefined; gitCommitMessage?: string | undefined; @@ -422,7 +424,7 @@ export const createPublishGitlabMergeRequestAction: (options: { branchName: string; targetPath: string; token?: string | undefined; - commitAction?: 'update' | 'create' | 'delete' | undefined; + commitAction?: 'create' | 'update' | 'delete' | undefined; projectid?: string | undefined; removeSourceBranch?: boolean | undefined; assignee?: string | undefined; From 9d18c0c382b28d27484a299ee736f384b3b71fe7 Mon Sep 17 00:00:00 2001 From: Isaiah Thiessen Date: Tue, 16 Aug 2022 09:27:55 -0700 Subject: [PATCH 047/275] fix: update component props in unit tests Signed-off-by: Isaiah Thiessen --- .../Problems/ProblemsList/ProblemsList.test.tsx | 10 ++-------- .../Synthetics/SyntheticsCard/SyntheticsCard.test.tsx | 6 +----- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.test.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.test.tsx index ff5d20dc28..9b9c51dca1 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.test.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.test.tsx @@ -36,10 +36,7 @@ describe('ProblemStatus', () => { .mockResolvedValue({ problems }); const rendered = await renderInTestApp( - + , ); expect(await rendered.findByText('example-service')).toBeInTheDocument(); @@ -48,10 +45,7 @@ describe('ProblemStatus', () => { mockDynatraceApi.getDynatraceProblems = jest.fn().mockResolvedValue({}); const rendered = await renderInTestApp( - + , ); expect( diff --git a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx index 8a06a140b4..e9083a3f82 100644 --- a/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx +++ b/plugins/dynatrace/src/components/Synthetics/SyntheticsCard/SyntheticsCard.test.tsx @@ -42,11 +42,7 @@ describe('SyntheticsCard', () => { }); const rendered = await renderInTestApp( - - , + , , ); expect( From 8fd4614665cc67f68cf296e63de61dc90aadaa21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Aug 2022 19:39:21 +0000 Subject: [PATCH 048/275] chore(deps): update dependency @types/lodash to v4.14.183 Signed-off-by: Renovate Bot --- yarn.lock | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8a1f29ae08..a17922a7dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7131,14 +7131,14 @@ "@types/node" "*" "@types/lodash@^4.14.151", "@types/lodash@^4.14.173", "@types/lodash@^4.14.175": - version "4.14.182" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" - integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== + version "4.14.183" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.183.tgz#1173e843e858cff5b997c234df2789a4a54c2374" + integrity sha512-UXavyuxzXKMqJPEpFPri6Ku5F9af6ZJXUneHhvQJxavrEjuHkFp2YnDWHcxJiG7hk8ZkWqjcyNeW1s/smZv5cw== "@types/long@^4.0.0", "@types/long@^4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" - integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== + version "4.0.2" + resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== "@types/lru-cache@^5.1.0": version "5.1.1" @@ -7150,12 +7150,7 @@ resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz#728f445855818fb17776d10ef4678f278072eb03" integrity sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g== -"@types/luxon@*": - version "2.4.0" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz#897d3abc23b68d78b69d76a12c21e01eb5adab95" - integrity sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw== - -"@types/luxon@^3.0.0": +"@types/luxon@*", "@types/luxon@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.0.0.tgz#47fb7891e41875fce7018a8bd3d09b204c5621f5" integrity sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw== From 659116f613fa3d90f324d3b1ecbf8f312618cb4c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 00:34:35 +0000 Subject: [PATCH 049/275] chore(deps): update dependency @types/svgo to v2.6.4 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f3ebf7ca3d..a458ed69e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7674,9 +7674,9 @@ "@types/superagent" "*" "@types/svgo@^2.6.2": - version "2.6.3" - resolved "https://registry.npmjs.org/@types/svgo/-/svgo-2.6.3.tgz#0786d8329b67cd48d84e57cb92b79832b85e6c8e" - integrity sha512-5sP0Xgo0dXppY0tbYF6TevB/1+tzFLuu71XXxC/zGvQAn9PW7y+DwtDO81g0ZUPye00K6tPwtsLDOpARa0mFcA== + version "2.6.4" + resolved "https://registry.npmjs.org/@types/svgo/-/svgo-2.6.4.tgz#b7298fc1dd687539fd63fc818b00146d96e68836" + integrity sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng== dependencies: "@types/node" "*" From 04190e2f22e7f58a3447c089f764087429e32d3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 00:36:10 +0000 Subject: [PATCH 050/275] chore(deps): update dependency cypress to v10.6.0 Signed-off-by: Renovate Bot --- cypress/yarn.lock | 24 ++++++++++++------------ yarn.lock | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/cypress/yarn.lock b/cypress/yarn.lock index 96e350871b..2f1e0f0775 100644 --- a/cypress/yarn.lock +++ b/cypress/yarn.lock @@ -40,14 +40,14 @@ lodash.once "^4.1.1" "@types/node@*": - version "18.6.3" - resolved "https://registry.npmjs.org/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98" - integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg== + version "18.7.6" + resolved "https://registry.npmjs.org/@types/node/-/node-18.7.6.tgz#31743bc5772b6ac223845e18c3fc26f042713c83" + integrity sha512-EdxgKRXgYsNITy5mjjXjVE/CS8YENSdhiagGrLqjG0pvA2owgJ6i4l7wy/PFZGC0B1/H20lWKN7ONVDNYDZm7A== "@types/node@^14.14.31": - version "14.18.23" - resolved "https://registry.npmjs.org/@types/node/-/node-14.18.23.tgz#70f5f20b0b1b38f696848c1d3647bb95694e615e" - integrity sha512-MhbCWN18R4GhO8ewQWAFK4TGQdBpXWByukz7cWyJmXhvRuCIaM/oWytGPqVmDzgEnnaIc9ss6HbU5mUi+vyZPA== + version "14.18.24" + resolved "https://registry.npmjs.org/@types/node/-/node-14.18.24.tgz#406b220dc748947e1959d8a38a75979e87166704" + integrity sha512-aJdn8XErcSrfr7k8ZDDfU6/2OgjZcB2Fu9d+ESK8D7Oa5mtsv8Fa8GpcwTA0v60kuZBaalKPzuzun4Ov1YWO/w== "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" @@ -304,9 +304,9 @@ cross-spawn@^7.0.0: which "^2.0.1" cypress@^10.0.0: - version "10.4.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-10.4.0.tgz#bb5b3b6588ad49eff172fecf5778cc0da2980e4e" - integrity sha512-OM7F8MRE01SHQRVVzunid1ZK1m90XTxYnl+7uZfIrB4CYqUDCrZEeSyCXzIbsS6qcaijVCAhqDL60SxG8N6hew== + version "10.6.0" + resolved "https://registry.npmjs.org/cypress/-/cypress-10.6.0.tgz#13f46867febf2c3715874ed5dce9c2e946b175fe" + integrity sha512-6sOpHjostp8gcLO34p6r/Ci342lBs8S5z9/eb3ZCQ22w2cIhMWGUoGKkosabPBfKcvRS9BE4UxybBtlIs8gTQA== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -359,9 +359,9 @@ dashdash@^1.12.0: assert-plus "^1.0.0" dayjs@^1.10.4: - version "1.11.4" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz#3b3c10ca378140d8917e06ebc13a4922af4f433e" - integrity sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g== + version "1.11.5" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz#00e8cc627f231f9499c19b38af49f56dc0ac5e93" + integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== debug@^3.1.0: version "3.2.7" diff --git a/yarn.lock b/yarn.lock index f3ebf7ca3d..564d01f003 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11366,9 +11366,9 @@ cypress-plugin-snapshots@^1.4.4: unidiff "1.0.2" cypress@^10.0.0: - version "10.4.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-10.4.0.tgz#bb5b3b6588ad49eff172fecf5778cc0da2980e4e" - integrity sha512-OM7F8MRE01SHQRVVzunid1ZK1m90XTxYnl+7uZfIrB4CYqUDCrZEeSyCXzIbsS6qcaijVCAhqDL60SxG8N6hew== + version "10.6.0" + resolved "https://registry.npmjs.org/cypress/-/cypress-10.6.0.tgz#13f46867febf2c3715874ed5dce9c2e946b175fe" + integrity sha512-6sOpHjostp8gcLO34p6r/Ci342lBs8S5z9/eb3ZCQ22w2cIhMWGUoGKkosabPBfKcvRS9BE4UxybBtlIs8gTQA== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" From d38072a59a9f2cbad256dd31eaa4897aba2d10e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 00:37:11 +0000 Subject: [PATCH 051/275] fix(deps): update dependency aws-sdk to v2.1196.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f3ebf7ca3d..f03cd14a1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8987,9 +8987,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: - version "2.1195.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1195.0.tgz#f6f091426934ba1a4f8d5138f568e840f7bdb51a" - integrity sha512-xU7177JhKM+4SsLnoA6/r3qGzSXmbLgw/YC1KRHvZyJCbuTY+vdAGLaldbtNXjjwmE3a6EeoCREANv8GY62VdQ== + version "2.1196.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1196.0.tgz#28951e1c742373397514f295f742eb3a9497c02d" + integrity sha512-iOGhCY5IqGfHCJ70p0H/uxkXDh/96KanAMfhnGGbIKbpVliuEV7SYxTfsWORaaUHey+N8FE6OMKfzo7F4X+wQg== dependencies: buffer "4.9.2" events "1.1.1" From 243533ecdc66faa50662bbe3b192fb1dfd67a904 Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Mon, 15 Aug 2022 15:15:34 -0300 Subject: [PATCH 052/275] Feat: Added support to mysql on some raw queries Signed-off-by: Daniel Dias Branco Arthaud --- .changeset/five-carrots-pay.md | 6 ++++ .../backend-tasks/src/tasks/TaskWorker.ts | 23 +++++++++----- packages/backend-tasks/src/tasks/util.ts | 13 ++++++-- .../src/database/DefaultProcessingDatabase.ts | 31 ++++++++++++++++--- 4 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 .changeset/five-carrots-pay.md diff --git a/.changeset/five-carrots-pay.md b/.changeset/five-carrots-pay.md new file mode 100644 index 0000000000..60fa91c163 --- /dev/null +++ b/.changeset/five-carrots-pay.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-tasks': patch +'@backstage/plugin-catalog-backend': patch +--- + +Added support to mysql on some raw queries diff --git a/packages/backend-tasks/src/tasks/TaskWorker.ts b/packages/backend-tasks/src/tasks/TaskWorker.ts index c99c08e4fb..f56c03c3d5 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.ts @@ -292,14 +292,21 @@ export class TaskWorker { seconds: dt, })}`, ); - nextRun = this.knex.client.config.client.includes('sqlite3') - ? this.knex.raw( - `max(datetime(next_run_start_at, ?), datetime('now'))`, - [`+${dt} seconds`], - ) - : this.knex.raw( - `greatest(next_run_start_at + interval '${dt} seconds', now())`, - ); + + if (this.knex.client.config.client.includes('sqlite3')) { + nextRun = this.knex.raw( + `max(datetime(next_run_start_at, ?), datetime('now'))`, + [`+${dt} seconds`], + ); + } else if (this.knex.client.config.client.includes('mysql')) { + nextRun = this.knex.raw( + `greatest(next_run_start_at + interval ${dt} second, now())`, + ); + } else { + nextRun = this.knex.raw( + `greatest(next_run_start_at + interval '${dt} seconds', now())`, + ); + } } const rows = await this.knex(DB_TASKS_TABLE) diff --git a/packages/backend-tasks/src/tasks/util.ts b/packages/backend-tasks/src/tasks/util.ts index 34280cc2d4..2561203318 100644 --- a/packages/backend-tasks/src/tasks/util.ts +++ b/packages/backend-tasks/src/tasks/util.ts @@ -38,9 +38,16 @@ export function nowPlus(duration: Duration | undefined, knex: Knex) { if (!seconds) { return knex.fn.now(); } - return knex.client.config.client.includes('sqlite3') - ? knex.raw(`datetime('now', ?)`, [`${seconds} seconds`]) - : knex.raw(`now() + interval '${seconds} seconds'`); + + if (knex.client.config.client.includes('sqlite3')) { + return knex.raw(`datetime('now', ?)`, [`${seconds} seconds`]); + } + + if (knex.client.config.client.includes('mysql')) { + return knex.raw(`now() + interval ${seconds} second`); + } + + return knex.raw(`now() + interval '${seconds} seconds'`); } /** diff --git a/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts b/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts index c9b71d096d..1cf2643339 100644 --- a/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts +++ b/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts @@ -113,7 +113,10 @@ export class DefaultProcessingDatabase implements ProcessingDatabase { // Delete old relations let previousRelationRows: DbRelationsRow[]; - if (tx.client.config.client.includes('sqlite3')) { + if ( + tx.client.config.client.includes('sqlite3') || + tx.client.config.client.includes('mysql') + ) { previousRelationRows = await tx('relations') .select('*') .where({ originating_entity_id: id }); @@ -201,6 +204,13 @@ export class DefaultProcessingDatabase implements ProcessingDatabase { if (toRemove.length) { let removedCount = 0; + const rootId = () => { + if (tx.client.config.client.includes('mysql')) { + return tx.raw('CAST(NULL as UNSIGNED INT)', []); + } + + return tx.raw('CAST(NULL as INT)', []); + }; for (const refs of lodash.chunk(toRemove, 1000)) { /* WITH RECURSIVE @@ -266,7 +276,7 @@ export class DefaultProcessingDatabase implements ProcessingDatabase { .withRecursive('ancestors', function ancestors(outer) { return outer .select({ - root_id: tx.raw('CAST(NULL as INT)', []), + root_id: rootId(), via_entity_ref: 'entity_ref', to_entity_ref: 'entity_ref', }) @@ -435,15 +445,26 @@ export class DefaultProcessingDatabase implements ProcessingDatabase { .orderBy('next_update_at', 'asc'); const interval = this.options.refreshInterval(); + + const nextUpdateAt = (refreshInterval: number) => { + if (tx.client.config.client.includes('sqlite3')) { + return tx.raw(`datetime('now', ?)`, [`${refreshInterval} seconds`]); + } + + if (tx.client.config.client.includes('mysql')) { + return tx.raw(`now() + interval ${refreshInterval} second`); + } + + return tx.raw(`now() + interval '${refreshInterval} seconds'`); + }; + await tx('refresh_state') .whereIn( 'entity_ref', items.map(i => i.entity_ref), ) .update({ - next_update_at: tx.client.config.client.includes('sqlite3') - ? tx.raw(`datetime('now', ?)`, [`${interval} seconds`]) - : tx.raw(`now() + interval '${interval} seconds'`), + next_update_at: nextUpdateAt(interval), }); return { From 38ad1fe1c50f07a26a1fc3445835b0c466866e49 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 01:34:46 +0000 Subject: [PATCH 053/275] fix(deps): update dependency google-auth-library to v8.2.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4d07a9c2ea..41c4c9c803 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14460,9 +14460,9 @@ globby@^7.1.1: slash "^1.0.0" google-auth-library@^8.0.0, google-auth-library@^8.0.1, google-auth-library@^8.0.2: - version "8.1.1" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.1.1.tgz#4068d2b1512b812d3d3dfbdc848452a0d5a550de" - integrity sha512-eG3pCfrLgVJe19KhAeZwW0m1LplNEo0FX1GboWf3hu18zD2jq8TUH2K8900AB2YRAuJ7A+1aSXDp1BODjwwRzg== + version "8.2.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.2.0.tgz#36d93e42f9bc8856ac2e69778b2b7a1e2aa16217" + integrity sha512-wCWs44jLT3cbzONVk2NKK1sfWaKCqzR21cudG3r9tV53/DC/wImxEr7HK5OBlEU5Q1iepZsrdFOxvzmC0M/YRQ== dependencies: arrify "^2.0.0" base64-js "^1.3.0" From 8fc1be7929848b160b821d5bba043f2840c8a4ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 01:35:50 +0000 Subject: [PATCH 054/275] fix(deps): update dependency graphql to v16.6.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4d07a9c2ea..94223b43f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14622,9 +14622,9 @@ graphql-ws@^5.4.1, graphql-ws@^5.9.0: integrity sha512-ewbPzHQdRZgNCPDH9Yr6xccSeZfk3fmpO/AGGGg4KkM5gc6oAOJQ10Oui1EqprhVOyRbOll9bw2qAkOiOwfTag== graphql@^16.0.0, graphql@^16.3.0: - version "16.5.0" - resolved "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz#41b5c1182eaac7f3d47164fb247f61e4dfb69c85" - integrity sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA== + version "16.6.0" + resolved "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== grouped-queue@^2.0.0: version "2.0.0" From 196cb37c690f81dd86b80b104b2da1cb34e2317e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 08:29:24 +0000 Subject: [PATCH 055/275] fix(deps): update dependency isomorphic-git to v1.19.2 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 19853ea6dc..32c1a6dbba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16187,9 +16187,9 @@ isomorphic-form-data@^2.0.0: form-data "^2.3.2" isomorphic-git@^1.8.0: - version "1.19.1" - resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.19.1.tgz#99e18db18826b07c40a4c4b32484e917a4c4fd31" - integrity sha512-enp69F9dIWtAAB+aEMV83AVDiOoi7zHTMr1kTP2Bzka/PlX0W6C74W2y9b9UToX65oXvipPzhY5An2+F5BXVQw== + version "1.19.2" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.19.2.tgz#e8f57443c63a58054f65f42e5cb189a2df31bd0d" + integrity sha512-14Tbf3GRFNoXw+fy6ssK7gpDZQxF+NytHmg7p+5L38IAVUafHnfjzJ0ZnEmLz3SAG20wYYyB+HufkRAFRttYxQ== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" From 765f1817883224656da86434e2efba3ac752b4f8 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 16 Aug 2022 11:35:19 +0200 Subject: [PATCH 056/275] Add 1.5.0 release notes Signed-off-by: Johan Haals --- docs/releases/v1.5.0.md | 60 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docs/releases/v1.5.0.md diff --git a/docs/releases/v1.5.0.md b/docs/releases/v1.5.0.md new file mode 100644 index 0000000000..ca4ae11185 --- /dev/null +++ b/docs/releases/v1.5.0.md @@ -0,0 +1,60 @@ +--- +id: v1.5.0 +title: v1.5.0 +description: Backstage Release v1.5.0 +--- + +These are the release notes for the v1.5.0 release of [Backstage](https://backstage.io/). + +A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done. + +## Highlights + +### GitHub Entity Provider + +Added a new `GitHubEntityProvider` ([documentation](https://backstage.io/docs/integrations/github/discovery)), which allows for automatic discovery of catalog entity definition files out of your GitHub projects. This is an improvement upon the `GithubDiscoveryProcessor` that existed before, and we recommend using entity providers rather than processors for discovery and ingestion when possible. Contributed by [@brentg-telus](https://github.com/brentg-telus) [#12822](https://github.com/backstage/backstage/pull/12822) + +### Experimental Plugin Reconfiguration + +This release adds an experimental API that allows plugin authors to define plugin wide options. These options can then be used by adopters of the plugin to reconfigure it to fit their app. Check out the [plugin customization](https://backstage.io/docs/plugins/customization) docs for more information on how to get started. Feedback is welcome on this new feature! Contributed by [@acierto](https://github.com/acierto) [#11404](https://github.com/backstage/backstage/pull/11404) + +### Experimental Backend System Evolution + +This release adds the new `@backstage/backend-defaults` package, part of the [evolution of the backend system](https://github.com/backstage/backstage/issues/11611). This package is highly experimental and we do not recommend using it for any purpose, yet. + +### New plugin: `@aws/aws-proton-plugin-for-backstage` + +Interact with AWS Proton in Backstage. Contributed by [@clareliguori](https://github.com/clareliguori) [#12193](https://github.com/backstage/backstage/pull/12193) + +### New plugin: `@backstage/plugin-github-issues` + +This new plugin can be used to display GitHub issues for your entities. Contributed by [@mrwolny](https://github.com/mrwolny) [#12875](https://github.com/backstage/backstage/pull/12875) + +### New plugin: `@backstage/plugin-sonarqube-backend` + +This new backend for `@backstage/plugin-sonarqube` replaces the Sonarqube proxy configuration; once it is installed, you can remove the `/sonarqube` proxy entry. For more information, see the plugin [README.md](https://github.com/backstage/backstage/blob/master/plugins/sonarqube-backend/README.md). Contributed by [@Neemys](https://github.com/Neemys) [#11925](https://github.com/backstage/backstage/pull/11925) + +### New module: `@backstage/plugin-catalog-backend-module-bitbucket-server` + +This new module for the catalog backend adds the `BitbucketServerEntityProvider`, which allows discovery of entities out of Bitbucket Server installations. Contributed by [@ONordander](https://github.com/ONordander) [#12835](https://github.com/backstage/backstage/pull/12835) + +## Security Fixes + +This release does not contain any security fixes. + +## Upgrade path + +We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for [keeping Backstage updated](https://backstage.io/docs/getting-started/keeping-backstage-updated). + +## Links and References + +Below you can find a list of links and references to help you learn about and start using this new release. + +- [Backstage official website](https://backstage.io/), [documentation](https://backstage.io/docs/), and [getting started guide](https://backstage.io/docs/getting-started/) +- [GitHub repository](https://github.com/backstage/backstage) +- Backstage's [versioning and support policy](https://backstage.io/docs/overview/versioning-policy) +- [Community Discord](https://discord.gg/bFESRKVt) for discussions and support +- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.5.0-changelog.md) +- Backstage [Demos](https://backstage.io/demos), [Blog](https://backstage.io/blog), [Roadmap](https://backstage.io/docs/overview/roadmap) and [Plugins](https://backstage.io/plugins) + +Sign up for our [newsletter](https://mailchi.mp/spotify/backstage-community) if you want to be informed about what is happening in the world of Backstage. From 6396fc5a7eef0b5d6c10985c0c668ae3b992bae9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 09:45:53 +0200 Subject: [PATCH 057/275] docs: add threat model Co-authored-by: Johan Haals Co-authored-by: Eric Peterson Signed-off-by: Patrik Oldsberg --- docs/overview/threat-model.md | 83 +++++++++++++++++++++++++++++++++++ microsite/sidebars.json | 1 + mkdocs.yml | 1 + 3 files changed, 85 insertions(+) create mode 100644 docs/overview/threat-model.md diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md new file mode 100644 index 0000000000..447e914b3b --- /dev/null +++ b/docs/overview/threat-model.md @@ -0,0 +1,83 @@ +--- +id: threat-model +title: Backstage Threat Model +description: A document describing the threat model for Backstage. +--- + +The threat model outlines key security considerations of Backstage for operators, developers and security researchers. This is a living document and will evolve and be expanded alongside the Backstage project as relevant. + +See [Security Policy and Advisories](https://github.com/backstage/backstage/security) in the Backstage Github repository for details on reporting security vulnerabilities and advisories on fixed security flaws. + +## Trust Model + +The Backstage trust model is divided into three groups with different trust levels. + +An **internal user** is an authenticated user that generally belongs to the organization of a particular Backstage deployment. These users are trusted to the extent that they are not expected to compromise the availability of Backstage, but they are not trusted to not compromise data confidentiality or integrity. + +An **integrator** is a user responsible for configuring and maintaining an instance of Backstage. Integrators are fully trusted, since they operate the system and database and therefore have root access to the host system. Additional measures can be taken by adopters of Backstage in order to restrict or observe the access of this group, but that falls outside of the current scope of Backstage. + +Another group of de facto integrators is internal and external code contributors. When installing Backstage plugins you should vet them just like any other package from an external source. While it’s possible to limit the impact of for example a supply chain attack by splitting the deployment into separate services with different plugins, the Backstage project itself does not aim to prevent these kinds of attacks or in any other way sandbox or limit the access of plugins. + +An **external user** is a user that does not belong to the other two groups, for example a malicious actor outside of the organization. The security model of Backstage currently assumes that this group does not have any direct access to Backstage, and it is the responsibility of each adopter of Backstage to make sure this is the case. + +## Integrator Responsibilities + +As an integrator of Backstage you yourself are responsible for protecting your Backstage installation from external and unauthorized access. The sign-in system in Backstage does not exist to limit access, only to inform the system of the identity of the user. There are some plugins that have more fine-grained access control through the permissions system, but the primary purpose of that system is to restrict access to resources for internal users rather than Backstage as a whole. A common and recommended way to protect a Backstage deployment from unauthorized access is to deploy it behind an authenticating proxy such as AWS’s ALB, GCP’s IAP, or Cloudflare Access. + +Other responsibilities include protecting the integrity of configuration files as it may otherwise be possible to introduce vulnerable configurations, as well as the confidentiality of configured secrets related to Backstage as these typically include authentication details to third party systems. + +The integrator is ultimately responsible for auditing usage of internal and external plugins as these run on the host system and have access to configuration and secrets. When installing plugins from sources like NPM, you should vet these in the same way that you would vet any other package installed from that source. + +## Common Backend Configuration + +There are many common facilities that are configured centrally and available to all Backstage backend plugins. For example there is a `DatabaseManager` that provides access to a SQL database, `TaskScheduler` for scheduling long-running tasks, `Logger` as a general logging facility, and `UrlReader` for reading content from external sources. These are all configured either directly in code, or within the `backend` block of the static configuration. The appropriate care needs to be taken to ensure that any secrets remain confidential and no malicious configuration is injected. + +In a typical Backstage setup, there is no boundary between plugins that run on the same host. Likewise, there is no boundary between plugins that share the same database. Any plugin that is running on a host that has access to the database of any other plugin should be considered to have full access to that other plugin. For example, if the `catalog` plugin is deployed adjacent to the `auth` plugin and it has access to its database, the `catalog` can be considered to have full access to the `auth` plugin, even if they do not run on the same host. The only way to create a boundary between them is to deploy them in such a way that they do not have access to each others’ database. This applies to the database facility as well as any other shared resources, such as the cache. + +The `UrlReader` facility is of particular interest for a secure Backstage configuration. In particular the `backend.reading.allow` configuration lists the hosts that you trust the backend to be able to read content from on behalf of users. It is extremely important that this list does not, for example, allow access to instance metadata endpoints of cloud providers, or other endpoints that your Backstage instance may have access to which contain sensitive information. In general it is recommended to keep the list minimal and only allow reading from required endpoints. The same concerns apply to custom implementations of the `UrlReader` interface, if you need to implement these through code. + +## Authentication + +Backstage provides authentication of users through the `auth` plugin, which primarily acts as an authorization server for different OAuth 2.0 provider integrations. These integrations can both serve the purpose of signing users into Backstage, as well as providing delegated access to external resources, and are all subject to the common concerns of implementing secure OAuth 2.0 authorization servers. All auth provider integrations are disabled by default, and need to be enabled through configuration in order to be used. For each Backstage installation it is recommended to only enable the minimal set of providers that are in use by that instance. + +It is not within scope of the `auth` backend to protect against unauthorized access, that is something that needs to be handled at a deployment level. See the [Integrator Responsibilities](#integrator-responsibilities) section for more information. + +In order to use an auth provider to sign in users into Backstage, it needs to be configured with an [Identity resolver](https://backstage.io/docs/auth/identity-resolver), which is a custom callback implemented in code. The identity resolver is a sensitive part of configuring Backstage and it is important that it always resolves user identities correctly, based on information provided by the authentication provider. There are a number of built-in identity resolvers that can simplify configuration, and it is important that these all resolve users in a secure way, regardless of how they are used. + +As part of signing in with an identity resolver, a Backstage Token is issued containing the resolved user identity. The tokens are asymmetrically signed JSON Web Tokens, with the public keys available to any service that wishes to verify a token. The signing keys are rotated continuously and are unique to each installation of Backstage, meaning that Backstage Tokens are not shared across installations. The token contains claims for the user identity and ownership information, which can be used to determine what Backstage resources are owned by that user or group. It is important that this token can not be forged outside of the `auth` plugin, with the exception of other plugins deployed in the same backend service or sharing the same database. For a high-security deployment, the `auth` backend should therefore be deployed in a separate service with its own database. + +The token is used to prove the identity of the user within the Backstage system, and is used throughout Backstage plugins to control access. It is important that the ownership resolution logic is consistent across the entire Backstage ecosystem, with no possibility of misinterpreting the ownership information. + +For cross backend communication the Backstage Token is typically forwarded or in strict backend to backend communication without a user party the backend itself issues a service token based on a pre-shared secret which is then validated on the receiving end. There are no unique service identities tied to these tokens at this point, meaning the tokens can be used across all services in a Backstage installation, this is something that we aim to improve in the future. + +Backstage also supports authentication through a proxy where the user identity is read from the incoming request from the proxy, which has been decorated by an authenticating reverse proxy such as [AWS ALB](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/). The following proxy auth providers verify the signature of incoming requests, and are therefore safe to deploy with direct access by users: `awsAlb`, `cfAccess`, and `gcpIap`. Providers like `oauth2Proxy` does not verify the incoming request and can therefore be spoofed by a malicious internal user to supply the `auth` backend with forged identity information. It’s therefore highly recommended to restrict access to the `oauth2Proxy` endpoints, or use a different provider. + +## Catalog + +Integrators should configure `catalog.rules` and `catalog.locations[].rules` to limit the allowed entity kinds that users can define, in general it is best to restrict definition of User, Group, and Template entities so that internal users cannot register additional ones. Template entities define actions that are executed on the backend hosts, while the goal is for these actions to be secure regardless of input, it is still a more sensitive context and it is recommended that you protect it with additional checks. It is very important to not allow registration of User and Group entities if you ingest and rely on these as organizational data in your catalog. Doing so could otherwise open up for the ability to impersonate users and confuse group membership information. You should always ingest organizational data using a statically configured catalog location or an entity provider reading from a trusted source. + +The Catalog does not aim to protect against resource exhaustion attacks in its default setup. If you need to prevent your internal users from being able to register large amounts of entities, then it is recommended to disable entity registration and use a different approach for discovering entities. One way to mitigate any resource exhaustion attacks is to only allow the catalog to read from trusted SCM sources that have an audit trail. Catalog currently lacks limits for entity hierarchy depth and entity size, which we hope to address in the future. + +By default all internal users are allowed to create and delete entities. If this does not fit your organization's needs it is recommended to enable and configure the [permission](https://backstage.io/docs/permissions/overview) system to restrict these operations. + +## Scaffolder + +By default, Scaffolding jobs execute directly on the host machine, including any actions defined in the template. Because the Scaffolder templates are considered a more sensitive area it is recommended to control access to create and update templates to trusted parties. Template execution is intended to be secure regardless of input, but we still recommend this additional layer of protection. The string templating is executed in a [node VM sandbox](https://github.com/patriksimek/vm2) to mitigate the possibility of remote code execution attacks. + +The Scaffolder often has elevated permissions to for example create repositories in a Github organization. The integrator should therefore be cautious of Scaffolder Templates that for example delete or update existing resources as the user input is typically user defined and can therefore delete or modify resources maliciously or by mistake. + +One strategy that allows you to reduce the access that the Scaffolder service has is to rely on user credentials when executing actions. For example, a GitHub App integration could be configured with read-only permissions, with a separate user OAuth token used to create repositories. This requires that your users have access to create repositories in the first place. + +The integrator should audit installed scaffolding actions just like any other plugin package. It is also important to verify that installed actions fall in line with your own security requirements, as some actions might be intended for more relaxed environments. + +By default all internal users are allowed to execute templates in the scaffolder. If this does not fit your organization's needs it is recommended to enable and configure the [permission](https://backstage.io/docs/permissions/overview) system to restrict these operations. + +## TechDocs + +TechDocs' backend can be broadly configured in two ways. The default is when `techdocs.builder` is set to `local`, in which documentation is generated on-demand and stored locally by the TechDocs backend. When `techdocs.builder` is set to `external` instead, documentation is assumed to be generated by an external process (e.g. in a CI/CD pipeline), and merely read from a configured external storage provider. + +When documentation is generated locally, integrators are responsible for ensuring secure configuration of file system permissions in the location where generated assets are stored. When documentation is generated externally, integrators are responsible for access control and permissioning between the external process that generates the documentation, the storage provider where documentation assets are published, and the TechDocs backend. + +Regardless of backend configuration, the TechDocs frontend does not trust the generated HTML of any documentation sites and therefore applies a strict sanitization process before rendering out any content to users. + +By default, all TechDocs documentation is visible to all Backstage users. Access can be restricted to TechDocs sites by configuring view permissions for the Catalog. diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 27ae9c8295..a672448a44 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -17,6 +17,7 @@ "overview/background", "overview/adopting", "overview/versioning-policy", + "overview/threat-model", "overview/support", "overview/glossary", "overview/logos" diff --git a/mkdocs.yml b/mkdocs.yml index bf577e53a1..e3bd86afdb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -15,6 +15,7 @@ nav: - The Spotify Story: 'overview/background.md' - Strategies for adopting: 'overview/adopting.md' - Release & Versioning Policy: 'overview/versioning-policy.md' + - Backstage Threat Model: 'overview/threat-model.md' - Support and community: 'overview/support.md' - Glossary: 'overview/glossary.md' - Logo assets: 'overview/logos.md' From f5bfad5dd2af8d8d6a7c8c07b80be0de58e30a6e Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Wed, 17 Aug 2022 11:43:26 +0200 Subject: [PATCH 058/275] Update .changeset/beige-pumas-tap.md Co-authored-by: Patrik Oldsberg Signed-off-by: Leon van Ginneken --- .changeset/beige-pumas-tap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/beige-pumas-tap.md b/.changeset/beige-pumas-tap.md index 63b2fb0ec5..8ed8aab1f4 100644 --- a/.changeset/beige-pumas-tap.md +++ b/.changeset/beige-pumas-tap.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-backend': minor --- -Add the option for a homepage when using the github:publish action +Add the option for a homepage when using the `github:publish` action From 422ac84c304dbeff96f5baa57171edb2f944674f Mon Sep 17 00:00:00 2001 From: Leon van Ginneken Date: Wed, 17 Aug 2022 12:15:49 +0200 Subject: [PATCH 059/275] chore: api-report Signed-off-by: Leon van Ginneken --- plugins/scaffolder-backend/api-report.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 7bdc09c874..cdbfe165f4 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -188,7 +188,7 @@ export function createGithubRepoCreateAction(options: { allowMergeCommit?: boolean | undefined; requireCodeOwnerReviews?: boolean | undefined; requiredStatusCheckContexts?: string[] | undefined; - repoVisibility?: 'public' | 'private' | 'internal' | undefined; + repoVisibility?: 'internal' | 'private' | 'public' | undefined; collaborators?: | ( | { @@ -268,7 +268,7 @@ export function createPublishBitbucketAction(options: { repoUrl: string; description?: string | undefined; defaultBranch?: string | undefined; - repoVisibility?: 'public' | 'private' | undefined; + repoVisibility?: 'private' | 'public' | undefined; sourcePath?: string | undefined; enableLFS?: boolean | undefined; token?: string | undefined; @@ -285,7 +285,7 @@ export function createPublishBitbucketCloudAction(options: { repoUrl: string; description?: string | undefined; defaultBranch?: string | undefined; - repoVisibility?: 'public' | 'private' | undefined; + repoVisibility?: 'private' | 'public' | undefined; sourcePath?: string | undefined; token?: string | undefined; }>; @@ -298,7 +298,7 @@ export function createPublishBitbucketServerAction(options: { repoUrl: string; description?: string | undefined; defaultBranch?: string | undefined; - repoVisibility?: 'public' | 'private' | undefined; + repoVisibility?: 'private' | 'public' | undefined; sourcePath?: string | undefined; enableLFS?: boolean | undefined; token?: string | undefined; @@ -354,7 +354,7 @@ export function createPublishGithubAction(options: { sourcePath?: string | undefined; requireCodeOwnerReviews?: boolean | undefined; requiredStatusCheckContexts?: string[] | undefined; - repoVisibility?: 'public' | 'private' | 'internal' | undefined; + repoVisibility?: 'internal' | 'private' | 'public' | undefined; collaborators?: | ( | { @@ -400,7 +400,7 @@ export function createPublishGitlabAction(options: { }): TemplateAction<{ repoUrl: string; defaultBranch?: string | undefined; - repoVisibility?: 'public' | 'private' | 'internal' | undefined; + repoVisibility?: 'internal' | 'private' | 'public' | undefined; sourcePath?: string | undefined; token?: string | undefined; gitCommitMessage?: string | undefined; @@ -419,7 +419,7 @@ export const createPublishGitlabMergeRequestAction: (options: { branchName: string; targetPath: string; token?: string | undefined; - commitAction?: 'create' | 'update' | 'delete' | undefined; + commitAction?: 'update' | 'delete' | 'create' | undefined; projectid?: string | undefined; removeSourceBranch?: boolean | undefined; assignee?: string | undefined; From 361d88f6cc6e61dbe3d1c274a1a93f0a381a3a34 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 13:09:41 +0200 Subject: [PATCH 060/275] scaffolder-backend: update API report Signed-off-by: Patrik Oldsberg --- plugins/scaffolder-backend/api-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index cdbfe165f4..68ab024bf6 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -419,7 +419,7 @@ export const createPublishGitlabMergeRequestAction: (options: { branchName: string; targetPath: string; token?: string | undefined; - commitAction?: 'update' | 'delete' | 'create' | undefined; + commitAction?: 'update' | 'create' | 'delete' | undefined; projectid?: string | undefined; removeSourceBranch?: boolean | undefined; assignee?: string | undefined; From f3bdd15ab38df03fa2437ef4eb608cbd64d6ff32 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 15 Aug 2022 13:50:45 +0200 Subject: [PATCH 061/275] catalog-node: allow multiple providers to be passed to extension point MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: Johan Haals Co-authored-by: blam Signed-off-by: Patrik Oldsberg --- plugins/catalog-backend/src/service/CatalogPlugin.ts | 12 ++++++++---- plugins/catalog-node/api-report.md | 8 ++++++-- plugins/catalog-node/src/extensions.ts | 8 ++++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/plugins/catalog-backend/src/service/CatalogPlugin.ts b/plugins/catalog-backend/src/service/CatalogPlugin.ts index ed356df5a2..64e1e52494 100644 --- a/plugins/catalog-backend/src/service/CatalogPlugin.ts +++ b/plugins/catalog-backend/src/service/CatalogPlugin.ts @@ -35,12 +35,16 @@ class CatalogExtensionPointImpl implements CatalogProcessingExtensionPoint { #processors = new Array(); #entityProviders = new Array(); - addProcessor(processor: CatalogProcessor): void { - this.#processors.push(processor); + addProcessor( + ...processors: Array> + ): void { + this.#processors.push(...processors.flat()); } - addEntityProvider(provider: EntityProvider): void { - this.#entityProviders.push(provider); + addEntityProvider( + ...providers: Array> + ): void { + this.#entityProviders.push(...providers.flat()); } get processors() { diff --git a/plugins/catalog-node/api-report.md b/plugins/catalog-node/api-report.md index 46e3efef99..26617910b9 100644 --- a/plugins/catalog-node/api-report.md +++ b/plugins/catalog-node/api-report.md @@ -13,9 +13,13 @@ import { JsonValue } from '@backstage/types'; // @alpha (undocumented) export interface CatalogProcessingExtensionPoint { // (undocumented) - addEntityProvider(provider: EntityProvider): void; + addEntityProvider( + ...providers: Array> + ): void; // (undocumented) - addProcessor(processor: CatalogProcessor): void; + addProcessor( + ...processors: Array> + ): void; } // @alpha (undocumented) diff --git a/plugins/catalog-node/src/extensions.ts b/plugins/catalog-node/src/extensions.ts index 80fbd7630f..8dd9d8579a 100644 --- a/plugins/catalog-node/src/extensions.ts +++ b/plugins/catalog-node/src/extensions.ts @@ -21,8 +21,12 @@ import { CatalogProcessor } from './api/processor'; * @alpha */ export interface CatalogProcessingExtensionPoint { - addProcessor(processor: CatalogProcessor): void; - addEntityProvider(provider: EntityProvider): void; + addProcessor( + ...processors: Array> + ): void; + addEntityProvider( + ...providers: Array> + ): void; } /** From 7ac3306e271df385ca11621e113518c57141d6a1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 15 Aug 2022 13:53:11 +0200 Subject: [PATCH 062/275] catalog-backend-module-github: add initial module export for provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: blam Co-authored-by: Johan Haals Signed-off-by: Patrik Oldsberg --- .../api-report.md | 12 ++++ .../package.json | 2 + .../src/index.ts | 2 + .../src/module.ts | 69 +++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 plugins/catalog-backend-module-github/src/module.ts diff --git a/plugins/catalog-backend-module-github/api-report.md b/plugins/catalog-backend-module-github/api-report.md index 3e4c2cb06b..8e8055bafc 100644 --- a/plugins/catalog-backend-module-github/api-report.md +++ b/plugins/catalog-backend-module-github/api-report.md @@ -3,6 +3,7 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; import { CatalogProcessor } from '@backstage/plugin-catalog-backend'; import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend'; import { Config } from '@backstage/config'; @@ -14,6 +15,7 @@ import { LocationSpec } from '@backstage/plugin-catalog-backend'; import { Logger } from 'winston'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { TaskRunner } from '@backstage/backend-tasks'; +import { TaskScheduleDefinition } from '@backstage/backend-tasks'; // @public export class GithubDiscoveryProcessor implements CatalogProcessor { @@ -58,6 +60,16 @@ export class GitHubEntityProvider implements EntityProvider { refresh(logger: Logger): Promise; } +// @alpha +export const githubEntityProviderCatalogModule: ( + options?: GithubEntityProviderCatalogModuleOptions | undefined, +) => BackendFeature; + +// @alpha +export type GithubEntityProviderCatalogModuleOptions = { + schedule?: TaskScheduleDefinition; +}; + // @public export type GithubMultiOrgConfig = Array<{ name: string; diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index a0b7f10833..88a540077e 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -35,11 +35,13 @@ "dependencies": { "@backstage/backend-common": "^0.15.0", "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-plugin-api": "^0.1.1", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", "@backstage/integration": "^1.3.0", "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/plugin-catalog-node": "^1.0.1", "@backstage/types": "^1.0.0", "@octokit/graphql": "^5.0.0", "lodash": "^4.17.21", diff --git a/plugins/catalog-backend-module-github/src/index.ts b/plugins/catalog-backend-module-github/src/index.ts index 22a1167d48..d793d48f1e 100644 --- a/plugins/catalog-backend-module-github/src/index.ts +++ b/plugins/catalog-backend-module-github/src/index.ts @@ -27,3 +27,5 @@ export { GitHubEntityProvider } from './providers/GitHubEntityProvider'; export { GitHubOrgEntityProvider } from './providers/GitHubOrgEntityProvider'; export type { GitHubOrgEntityProviderOptions } from './providers/GitHubOrgEntityProvider'; export type { GithubMultiOrgConfig } from './lib'; +export { githubEntityProviderCatalogModule } from './module'; +export type { GithubEntityProviderCatalogModuleOptions } from './module'; diff --git a/plugins/catalog-backend-module-github/src/module.ts b/plugins/catalog-backend-module-github/src/module.ts new file mode 100644 index 0000000000..4eccef0611 --- /dev/null +++ b/plugins/catalog-backend-module-github/src/module.ts @@ -0,0 +1,69 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + createBackendModule, + loggerToWinstonLogger, + configServiceRef, + loggerServiceRef, + schedulerServiceRef, +} from '@backstage/backend-plugin-api'; +import { TaskScheduleDefinition } from '@backstage/backend-tasks'; +import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node'; +import { GitHubEntityProvider } from './providers/GitHubEntityProvider'; + +/** + * Options for {@link githubEntityProviderCatalogModule}. + * + * @alpha + */ +export type GithubEntityProviderCatalogModuleOptions = { + schedule?: TaskScheduleDefinition; +}; + +/** + * Registers the GitHubEntityProvider with the catalog processing extension point. + * + * @alpha + */ +export const githubEntityProviderCatalogModule = createBackendModule({ + pluginId: 'catalog', + moduleId: 'github-entity-provider', + register(env, options?: GithubEntityProviderCatalogModuleOptions) { + env.registerInit({ + deps: { + config: configServiceRef, + catalog: catalogProcessingExtensionPoint, + logger: loggerServiceRef, + scheduler: schedulerServiceRef, + }, + async init({ config, catalog, logger, scheduler }) { + const scheduleDef = options?.schedule ?? { + frequency: { seconds: 600 }, + timeout: { seconds: 900 }, + initialDelay: { seconds: 3 }, + }; + + catalog.addEntityProvider( + GitHubEntityProvider.fromConfig(config, { + logger: loggerToWinstonLogger(logger), + schedule: scheduler.createScheduledTaskRunner(scheduleDef), + }), + ); + }, + }); + }, +}); From 7220eb700ebd2756f62e6df930ce95296447a4cd Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 14:34:32 +0200 Subject: [PATCH 063/275] backend-app-api: add tests for ServiceRegistry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: Johan Haals Signed-off-by: Patrik Oldsberg --- .../src/wiring/ServiceRegistry.test.ts | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 packages/backend-app-api/src/wiring/ServiceRegistry.test.ts diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts new file mode 100644 index 0000000000..438a11130f --- /dev/null +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts @@ -0,0 +1,104 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + createServiceRef, + createServiceFactory, +} from '@backstage/backend-plugin-api'; +import { ServiceRegistry } from './ServiceRegistry'; + +const ref1 = createServiceRef<{ x: number; pluginId: string }>({ + id: '1', +}); +const sf1 = createServiceFactory({ + service: ref1, + deps: {}, + factory: async ({}) => { + return async pluginId => { + return { x: 1, pluginId }; + }; + }, +}); + +const ref2 = createServiceRef<{ x: number; pluginId: string }>({ + id: '2', +}); +const sf2 = createServiceFactory({ + service: ref2, + deps: {}, + factory: async ({}) => { + return async pluginId => { + return { x: 2, pluginId }; + }; + }, +}); +const sf2b = createServiceFactory({ + service: ref2, + deps: {}, + factory: async ({}) => { + return async pluginId => { + return { x: 22, pluginId }; + }; + }, +}); + +describe('ServiceRegistry', () => { + it('should return undefined if there is no factory defined', async () => { + const registry = new ServiceRegistry([]); + expect(registry.get(ref1)).toBe(undefined); + }); + + it('should return a factory for a registered ref', async () => { + const registry = new ServiceRegistry([sf1]); + const factory = registry.get(ref1)!; + expect(factory).toEqual(expect.any(Function)); + await expect(factory('catalog')).resolves.toEqual({ + x: 1, + pluginId: 'catalog', + }); + await expect(factory('scaffolder')).resolves.toEqual({ + x: 1, + pluginId: 'scaffolder', + }); + expect(await factory('catalog')).toBe(await factory('catalog')); + }); + + it('should handle multiple factories with different serviceRefs', async () => { + const registry = new ServiceRegistry([sf1, sf2]); + const factory1 = registry.get(ref1)!; + const factory2 = registry.get(ref2)!; + expect(factory1).toEqual(expect.any(Function)); + expect(factory2).toEqual(expect.any(Function)); + await expect(factory1('catalog')).resolves.toEqual({ + x: 1, + pluginId: 'catalog', + }); + await expect(factory2('catalog')).resolves.toEqual({ + x: 2, + pluginId: 'catalog', + }); + expect(await factory1('catalog')).not.toBe(await factory2('catalog')); + }); + + it('should use the last factory for each ref', async () => { + const registry = new ServiceRegistry([sf2, sf2b]); + const factory2 = registry.get(ref2)!; + await expect(factory2('catalog')).resolves.toEqual({ + x: 22, + pluginId: 'catalog', + }); + }); +}); From 70343d6813f75c6f918ac29c92dd10a589a0675b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 14:16:04 +0200 Subject: [PATCH 064/275] backend-plugin-api: add defaultFactory to ServiceRef MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: blam Co-authored-by: Johan Haals Signed-off-by: Patrik Oldsberg --- .../src/services/system/types.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/backend-plugin-api/src/services/system/types.ts b/packages/backend-plugin-api/src/services/system/types.ts index d578434170..1c6426ecec 100644 --- a/packages/backend-plugin-api/src/services/system/types.ts +++ b/packages/backend-plugin-api/src/services/system/types.ts @@ -28,6 +28,14 @@ export type ServiceRef = { */ T: T; + /** + * The default factory that will be used to create service + * instances if not other factory is provided. + */ + defaultFactory?: ( + service: ServiceRef, + ) => Promise>; + toString(): string; $$ref: 'service'; @@ -65,12 +73,19 @@ export type AnyServiceFactory = ServiceFactory< /** * @public */ -export function createServiceRef(options: { id: string }): ServiceRef { +export function createServiceRef(options: { + id: string; + defaultFactory?: ( + service: ServiceRef, + ) => Promise>; +}): ServiceRef { + const { id, defaultFactory } = options; return { - id: options.id, + id, get T(): T { throw new Error(`tried to read ServiceRef.T of ${this}`); }, + defaultFactory, toString() { return `serviceRef{${options.id}}`; }, From 99d0ce4199dca03fef50f2f5458ddc19d3925dee Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 17 Aug 2022 16:16:07 +0200 Subject: [PATCH 065/275] chore: remove duplicate adopter Signed-off-by: blam --- ADOPTERS.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 278422693d..146aed789f 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -27,8 +27,7 @@ _You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKi | [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling | | [Lunar](https://lunar.app) | [Jacob Valdemar](https://github.com/JacobValdemar) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. | | [Trendyol](https://trendyol.com) | [Gamze Senturk](https://github.com/gmzsenturk), [Mert Can Bilgic](https://github.com/mertcb) | The Developer Portal has been called `Pandora`. Provides an overview of Trendyol tech ecosystem. TechDocs, Catalog, Custom Plugins and Theme. | -| [Peloton](https://www.onepeloton.com/) | [Matt Waldron](https://github.com/daftgopher) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. | -| [TELUS](https://telus.com) | [Seb Barre](https://github.com/sbarre) | The Go-to place to find answers about development and delivery at TELUS. | +| [Peloton](https://www.onepeloton.com/) | [Matt Waldron](https://github.com/daftgopher) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. | | | [Brex](https://www.brex.com/) | [Vamsi Chitters](https://github.com/vamsikc) | A centralized UI to understand how a service fits in the whole Brex architecture and manage a team’s engineering dependencies. | | [Oriflame](https://www.oriflame.com/) | [Oriflame](https://github.com/oriflame) | Internal developer portal for services, single page apps and packages overview, API documentation, technical guides, tech-radar and more. | | [Booz Allen Hamilton](https://www.boozallen.com/) | [Jason Miller](https://github.com/JasonMiller-BAH) | Developer portal for a full-stack software development ecosystem that accelerates consistent and repeatable Modern Software Development practices for internal innovation and investments. | @@ -201,7 +200,7 @@ _You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKi | [Intility](https://intility.no/en/) | [@daniwk](https://github.com/daniwk) | We are creating a developer portal powered by Backstage, with software catalog, documentation, templates and integrations to our infrastructure and internal tools. | | [ImmobiliareLabs](https://labs.immobiliare.it/) | [@JellyBellyDev](https://github.com/JellyBellyDev) | Centralized portal with our internal services, infrastructures, relationships between systems, technical documentation, templates, monitoring and custom integrations with our own DX tools. | | [Skillz](https://skillz.com/) | [Peiman Jafari](https://github.com/peimanja) | Internal developers portal for technical documentations, components ownership and relationship, software templates and integrations with internal tools | -| [Telus](https://www.telus.com/en/) | [Leo Li](mailto:leo.li@telus.com), [Laurent Robichaud](mailto:laurent.robichaud@telus.com) | Simplifying the developer experience through centralized team member portals. Our current focus includes the adoption of Tech Docs, Software Catalog, Software Templates, the plethora of plugins, and contributing features back to Backstage. 🤖 | +| [Telus](https://www.telus.com/en/) | [Leo Li](mailto:leo.li@telus.com), [Laurent Robichaud](mailto:laurent.robichaud@telus.com), [Seb Barre](https://github.com/sbarre) | Simplifying the developer experience through centralized team member portals. Our current focus includes the adoption of Tech Docs, Software Catalog, Software Templates, the plethora of plugins, and contributing features back to Backstage. 🤖 | | [Fidelity Investments](https://fidelity.com) | [Ankita Upadhyay](mailto:ankita.upadhyay@fmr.com) | Getting started with the adoption for Monorepo projects | | [Verisk](https://verisk.com) | [Callen Barton](mailto:cbarton@verisk.com) | Developer portal to quickly create and deploy microservices. | | [iodigital](https://iodigital.com) | [Jan-Willem Mulder](mailto:jan-willem.mulder@iodigital.com) | Internal developer portal for discovery of applications, projects and teams. Using several plugins like the Software Catalog and Tech Insights for promoting best practices and supporting our SDLC toolchain | From 4a2acd29d3310711190da6fd32dd51bf0d50468e Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 17 Aug 2022 16:20:14 +0200 Subject: [PATCH 066/275] chore: make pretty Signed-off-by: blam --- ADOPTERS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 146aed789f..3a53f7d990 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -27,7 +27,7 @@ _You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKi | [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling | | [Lunar](https://lunar.app) | [Jacob Valdemar](https://github.com/JacobValdemar) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. | | [Trendyol](https://trendyol.com) | [Gamze Senturk](https://github.com/gmzsenturk), [Mert Can Bilgic](https://github.com/mertcb) | The Developer Portal has been called `Pandora`. Provides an overview of Trendyol tech ecosystem. TechDocs, Catalog, Custom Plugins and Theme. | -| [Peloton](https://www.onepeloton.com/) | [Matt Waldron](https://github.com/daftgopher) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. | | +| [Peloton](https://www.onepeloton.com/) | [Matt Waldron](https://github.com/daftgopher) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. | | [Brex](https://www.brex.com/) | [Vamsi Chitters](https://github.com/vamsikc) | A centralized UI to understand how a service fits in the whole Brex architecture and manage a team’s engineering dependencies. | | [Oriflame](https://www.oriflame.com/) | [Oriflame](https://github.com/oriflame) | Internal developer portal for services, single page apps and packages overview, API documentation, technical guides, tech-radar and more. | | [Booz Allen Hamilton](https://www.boozallen.com/) | [Jason Miller](https://github.com/JasonMiller-BAH) | Developer portal for a full-stack software development ecosystem that accelerates consistent and repeatable Modern Software Development practices for internal innovation and investments. | @@ -200,10 +200,10 @@ _You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKi | [Intility](https://intility.no/en/) | [@daniwk](https://github.com/daniwk) | We are creating a developer portal powered by Backstage, with software catalog, documentation, templates and integrations to our infrastructure and internal tools. | | [ImmobiliareLabs](https://labs.immobiliare.it/) | [@JellyBellyDev](https://github.com/JellyBellyDev) | Centralized portal with our internal services, infrastructures, relationships between systems, technical documentation, templates, monitoring and custom integrations with our own DX tools. | | [Skillz](https://skillz.com/) | [Peiman Jafari](https://github.com/peimanja) | Internal developers portal for technical documentations, components ownership and relationship, software templates and integrations with internal tools | -| [Telus](https://www.telus.com/en/) | [Leo Li](mailto:leo.li@telus.com), [Laurent Robichaud](mailto:laurent.robichaud@telus.com), [Seb Barre](https://github.com/sbarre) | Simplifying the developer experience through centralized team member portals. Our current focus includes the adoption of Tech Docs, Software Catalog, Software Templates, the plethora of plugins, and contributing features back to Backstage. 🤖 | +| [Telus](https://www.telus.com/en/) | [Leo Li](mailto:leo.li@telus.com), [Laurent Robichaud](mailto:laurent.robichaud@telus.com), [Seb Barre](https://github.com/sbarre) | Simplifying the developer experience through centralized team member portals. Our current focus includes the adoption of Tech Docs, Software Catalog, Software Templates, the plethora of plugins, and contributing features back to Backstage. 🤖 | | [Fidelity Investments](https://fidelity.com) | [Ankita Upadhyay](mailto:ankita.upadhyay@fmr.com) | Getting started with the adoption for Monorepo projects | | [Verisk](https://verisk.com) | [Callen Barton](mailto:cbarton@verisk.com) | Developer portal to quickly create and deploy microservices. | | [iodigital](https://iodigital.com) | [Jan-Willem Mulder](mailto:jan-willem.mulder@iodigital.com) | Internal developer portal for discovery of applications, projects and teams. Using several plugins like the Software Catalog and Tech Insights for promoting best practices and supporting our SDLC toolchain | | [Fanatics](https://www.fanaticsinc.com/) | [Rory Scott](mailto:rscott@fanatics.com) | Internal Portal consolidating documentation, making it easier to manage applications, internal developer community platform, and self-service cloud infrastructure + pipelines. | | [Appfolio](https://appfolio.com) | [Andy Vaughn](mailto:andy.vaughn@appfolio.com) | Internal software catalog, tech radar, documentation portal to disambiguate software and domain ownership, foster exploration of available developer platform services and tools, improve communication, democratize documentation and knowledge sharing, and coordinate the software lifecycle; all in service of a best-in-class developer experience. | -| [isaac](https://isaac.com.br/) | [Leonardo Borges](mailto:leonardo.borges@isaac.com.br), [Ordilei Souza](mailto:ordilei.souza@isaac.com.br) | We're using Backstage as our Internal Developer Portal and main microservices catalog for mapping ownership, health and metrics for each one. +| [isaac](https://isaac.com.br/) | [Leonardo Borges](mailto:leonardo.borges@isaac.com.br), [Ordilei Souza](mailto:ordilei.souza@isaac.com.br) | We're using Backstage as our Internal Developer Portal and main microservices catalog for mapping ownership, health and metrics for each one. | From eef91a2558e8ea66b973e5330da94aab7be4d7a3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 18:11:41 +0200 Subject: [PATCH 067/275] backend-plugin-api: simplified ServiceFactory type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: Johan Haals Signed-off-by: Patrik Oldsberg --- .changeset/old-tables-joke.md | 5 ++ packages/backend-app-api/api-report.md | 49 +++++-------------- .../src/wiring/BackendInitializer.ts | 4 +- .../src/wiring/BackstageBackend.ts | 7 +-- packages/backend-app-api/src/wiring/types.ts | 4 +- packages/backend-defaults/api-report.md | 4 +- .../backend-defaults/src/CreateBackend.ts | 8 +-- packages/backend-plugin-api/api-report.md | 45 ++++++++--------- .../src/services/system/index.ts | 1 - .../src/services/system/types.ts | 41 ++++++---------- packages/backend-test-utils/api-report.md | 4 +- .../src/next/wiring/TestBackend.ts | 6 +-- 12 files changed, 70 insertions(+), 108 deletions(-) create mode 100644 .changeset/old-tables-joke.md diff --git a/.changeset/old-tables-joke.md b/.changeset/old-tables-joke.md new file mode 100644 index 0000000000..d458244b3a --- /dev/null +++ b/.changeset/old-tables-joke.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-plugin-api': patch +--- + +Simplified the `ServiceFactory` type and removed `AnyServiceFactory`. diff --git a/packages/backend-app-api/api-report.md b/packages/backend-app-api/api-report.md index 26c8179771..0f8806870d 100644 --- a/packages/backend-app-api/api-report.md +++ b/packages/backend-app-api/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AnyServiceFactory } from '@backstage/backend-plugin-api'; import { BackendFeature } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; @@ -29,14 +28,10 @@ export interface Backend { } // @public (undocumented) -export const cacheFactory: ServiceFactory< - PluginCacheManager, - PluginCacheManager, - {} ->; +export const cacheFactory: ServiceFactory; // @public (undocumented) -export const configFactory: ServiceFactory; +export const configFactory: ServiceFactory; // @public (undocumented) export function createSpecializedBackend( @@ -46,46 +41,28 @@ export function createSpecializedBackend( // @public (undocumented) export interface CreateSpecializedBackendOptions { // (undocumented) - services: AnyServiceFactory[]; + services: ServiceFactory[]; } // @public (undocumented) -export const databaseFactory: ServiceFactory< - PluginDatabaseManager, - PluginDatabaseManager, - {} ->; +export const databaseFactory: ServiceFactory; // @public (undocumented) -export const discoveryFactory: ServiceFactory< - PluginEndpointDiscovery, - PluginEndpointDiscovery, - {} ->; +export const discoveryFactory: ServiceFactory; // @public (undocumented) -export const httpRouterFactory: ServiceFactory< - HttpRouterService, - HttpRouterService, - {} ->; +export const httpRouterFactory: ServiceFactory; // @public (undocumented) -export const loggerFactory: ServiceFactory; +export const loggerFactory: ServiceFactory; // @public (undocumented) export const permissionsFactory: ServiceFactory< - PermissionAuthorizer | PermissionEvaluator, - PermissionAuthorizer | PermissionEvaluator, - {} + PermissionAuthorizer | PermissionEvaluator >; // @public (undocumented) -export const schedulerFactory: ServiceFactory< - PluginTaskScheduler, - PluginTaskScheduler, - {} ->; +export const schedulerFactory: ServiceFactory; // @public (undocumented) export type ServiceOrExtensionPoint = @@ -93,12 +70,8 @@ export type ServiceOrExtensionPoint = | ServiceRef; // @public (undocumented) -export const tokenManagerFactory: ServiceFactory< - TokenManager, - TokenManager, - {} ->; +export const tokenManagerFactory: ServiceFactory; // @public (undocumented) -export const urlReaderFactory: ServiceFactory; +export const urlReaderFactory: ServiceFactory; ``` diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.ts b/packages/backend-app-api/src/wiring/BackendInitializer.ts index afb5250504..355fa6001d 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.ts @@ -108,7 +108,9 @@ export class BackendInitializer { id: feature.id, provides, consumes: new Set(Object.values(registerOptions.deps)), - deps: registerOptions.deps, + deps: registerOptions.deps as { + [name: string]: ServiceOrExtensionPoint; + }, init: registerOptions.init as BackendRegisterInit['init'], }; }, diff --git a/packages/backend-app-api/src/wiring/BackstageBackend.ts b/packages/backend-app-api/src/wiring/BackstageBackend.ts index 1e09ed77ba..1d76161bfe 100644 --- a/packages/backend-app-api/src/wiring/BackstageBackend.ts +++ b/packages/backend-app-api/src/wiring/BackstageBackend.ts @@ -14,10 +14,7 @@ * limitations under the License. */ -import { - AnyServiceFactory, - BackendFeature, -} from '@backstage/backend-plugin-api'; +import { ServiceFactory, BackendFeature } from '@backstage/backend-plugin-api'; import { BackendInitializer } from './BackendInitializer'; import { ServiceRegistry } from './ServiceRegistry'; import { Backend } from './types'; @@ -26,7 +23,7 @@ export class BackstageBackend implements Backend { #services: ServiceRegistry; #initializer: BackendInitializer; - constructor(apiFactories: AnyServiceFactory[]) { + constructor(apiFactories: ServiceFactory[]) { this.#services = new ServiceRegistry(apiFactories); this.#initializer = new BackendInitializer(this.#services); } diff --git a/packages/backend-app-api/src/wiring/types.ts b/packages/backend-app-api/src/wiring/types.ts index 0ca40b5660..55009edbdf 100644 --- a/packages/backend-app-api/src/wiring/types.ts +++ b/packages/backend-app-api/src/wiring/types.ts @@ -15,7 +15,7 @@ */ import { - AnyServiceFactory, + ServiceFactory, BackendFeature, ExtensionPoint, FactoryFunc, @@ -43,7 +43,7 @@ export interface BackendRegisterInit { * @public */ export interface CreateSpecializedBackendOptions { - services: AnyServiceFactory[]; + services: ServiceFactory[]; } export type ServiceHolder = { diff --git a/packages/backend-defaults/api-report.md b/packages/backend-defaults/api-report.md index 4c0fb80714..b5f1e154bb 100644 --- a/packages/backend-defaults/api-report.md +++ b/packages/backend-defaults/api-report.md @@ -3,8 +3,8 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AnyServiceFactory } from '@backstage/backend-plugin-api'; import { Backend } from '@backstage/backend-app-api'; +import { ServiceFactory } from '@backstage/backend-plugin-api'; // @public (undocumented) export function createBackend(options?: CreateBackendOptions): Backend; @@ -12,6 +12,6 @@ export function createBackend(options?: CreateBackendOptions): Backend; // @public (undocumented) export interface CreateBackendOptions { // (undocumented) - services?: AnyServiceFactory[]; + services?: ServiceFactory[]; } ``` diff --git a/packages/backend-defaults/src/CreateBackend.ts b/packages/backend-defaults/src/CreateBackend.ts index 7cc116a052..819a77ea11 100644 --- a/packages/backend-defaults/src/CreateBackend.ts +++ b/packages/backend-defaults/src/CreateBackend.ts @@ -28,7 +28,7 @@ import { tokenManagerFactory, urlReaderFactory, } from '@backstage/backend-app-api'; -import { AnyServiceFactory } from '@backstage/backend-plugin-api'; +import { ServiceFactory } from '@backstage/backend-plugin-api'; export const defaultServiceFactories = [ cacheFactory, @@ -47,15 +47,15 @@ export const defaultServiceFactories = [ * @public */ export interface CreateBackendOptions { - services?: AnyServiceFactory[]; + services?: ServiceFactory[]; } /** * @public */ export function createBackend(options?: CreateBackendOptions): Backend { - const services = new Map( - defaultServiceFactories.map(sf => [sf.service.id, sf]), + const services = new Map( + defaultServiceFactories.map(sf => [sf.service.id, sf as ServiceFactory]), ); if (options?.services) { diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md index fa5097be64..01423390e6 100644 --- a/packages/backend-plugin-api/api-report.md +++ b/packages/backend-plugin-api/api-report.md @@ -16,15 +16,6 @@ import { TokenManager } from '@backstage/backend-common'; import { TransportStreamOptions } from 'winston-transport'; import { UrlReader } from '@backstage/backend-common'; -// @public (undocumented) -export type AnyServiceFactory = ServiceFactory< - unknown, - unknown, - { - [key in string]: unknown; - } ->; - // @public (undocumented) export interface BackendFeature { // (undocumented) @@ -101,15 +92,22 @@ export function createExtensionPoint(options: { // @public (undocumented) export function createServiceFactory< - Api, - Impl extends Api, - Deps extends { + TService, + TImpl extends TService, + TDeps extends { [name in string]: unknown; }, ->(factory: ServiceFactory): ServiceFactory; +>(factory: { + service: ServiceRef; + deps: TypesToServiceRef; + factory(deps: DepsToDepFactories): Promise>; +}): ServiceFactory; // @public (undocumented) -export function createServiceRef(options: { id: string }): ServiceRef; +export function createServiceRef(options: { + id: string; + defaultFactory?: (service: ServiceRef) => Promise>; +}): ServiceRef; // @public (undocumented) export const databaseServiceRef: ServiceRef; @@ -168,22 +166,21 @@ export const permissionsServiceRef: ServiceRef< export const schedulerServiceRef: ServiceRef; // @public (undocumented) -export type ServiceFactory< - TApi, - TImpl extends TApi, - TDeps extends { - [name in string]: unknown; - }, -> = { - service: ServiceRef; - deps: TypesToServiceRef; - factory(deps: DepsToDepFactories): Promise>; +export type ServiceFactory = { + service: ServiceRef; + deps: { + [key in string]: ServiceRef; + }; + factory(deps: { + [key in string]: unknown; + }): Promise>; }; // @public export type ServiceRef = { id: string; T: T; + defaultFactory?: (service: ServiceRef) => Promise>; toString(): string; $$ref: 'service'; }; diff --git a/packages/backend-plugin-api/src/services/system/index.ts b/packages/backend-plugin-api/src/services/system/index.ts index eead2297a5..817b0a590f 100644 --- a/packages/backend-plugin-api/src/services/system/index.ts +++ b/packages/backend-plugin-api/src/services/system/index.ts @@ -20,6 +20,5 @@ export type { DepsToDepFactories, FactoryFunc, ServiceFactory, - AnyServiceFactory, } from './types'; export { createServiceRef, createServiceFactory } from './types'; diff --git a/packages/backend-plugin-api/src/services/system/types.ts b/packages/backend-plugin-api/src/services/system/types.ts index 1c6426ecec..dcd047c63d 100644 --- a/packages/backend-plugin-api/src/services/system/types.ts +++ b/packages/backend-plugin-api/src/services/system/types.ts @@ -32,9 +32,7 @@ export type ServiceRef = { * The default factory that will be used to create service * instances if not other factory is provided. */ - defaultFactory?: ( - service: ServiceRef, - ) => Promise>; + defaultFactory?: (service: ServiceRef) => Promise>; toString(): string; @@ -53,31 +51,18 @@ export type DepsToDepFactories = { export type FactoryFunc = (pluginId: string) => Promise; /** @public */ -export type ServiceFactory< - TApi, - TImpl extends TApi, - TDeps extends { [name in string]: unknown }, -> = { - service: ServiceRef; - deps: TypesToServiceRef; - factory(deps: DepsToDepFactories): Promise>; +export type ServiceFactory = { + service: ServiceRef; + deps: { [key in string]: ServiceRef }; + factory(deps: { [key in string]: unknown }): Promise>; }; -/** @public */ -export type AnyServiceFactory = ServiceFactory< - unknown, - unknown, - { [key in string]: unknown } ->; - /** * @public */ export function createServiceRef(options: { id: string; - defaultFactory?: ( - service: ServiceRef, - ) => Promise>; + defaultFactory?: (service: ServiceRef) => Promise>; }): ServiceRef { const { id, defaultFactory } = options; return { @@ -97,9 +82,13 @@ export function createServiceRef(options: { * @public */ export function createServiceFactory< - Api, - Impl extends Api, - Deps extends { [name in string]: unknown }, ->(factory: ServiceFactory): ServiceFactory { - return factory; + TService, + TImpl extends TService, + TDeps extends { [name in string]: unknown }, +>(factory: { + service: ServiceRef; + deps: TypesToServiceRef; + factory(deps: DepsToDepFactories): Promise>; +}): ServiceFactory { + return factory as ServiceFactory; } diff --git a/packages/backend-test-utils/api-report.md b/packages/backend-test-utils/api-report.md index b8881e659d..c0f6a43321 100644 --- a/packages/backend-test-utils/api-report.md +++ b/packages/backend-test-utils/api-report.md @@ -3,10 +3,10 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AnyServiceFactory } from '@backstage/backend-plugin-api'; import { BackendFeature } from '@backstage/backend-plugin-api'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { Knex } from 'knex'; +import { ServiceFactory } from '@backstage/backend-plugin-api'; import { ServiceRef } from '@backstage/backend-plugin-api'; // @public (undocumented) @@ -45,7 +45,7 @@ export interface TestBackendOptions< services?: readonly [ ...{ [index in keyof TServices]: - | AnyServiceFactory + | ServiceFactory | [ServiceRef, Partial]; }, ]; diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.ts index b9276fa9b9..98e979793e 100644 --- a/packages/backend-test-utils/src/next/wiring/TestBackend.ts +++ b/packages/backend-test-utils/src/next/wiring/TestBackend.ts @@ -16,7 +16,7 @@ import { createSpecializedBackend } from '@backstage/backend-app-api'; import { - AnyServiceFactory, + ServiceFactory, ServiceRef, createServiceFactory, BackendFeature, @@ -31,7 +31,7 @@ export interface TestBackendOptions< services?: readonly [ ...{ [index in keyof TServices]: - | AnyServiceFactory + | ServiceFactory | [ServiceRef, Partial]; }, ]; @@ -68,7 +68,7 @@ export async function startTestBackend< factory: async () => async () => serviceDef[1], }); } - return serviceDef as AnyServiceFactory; + return serviceDef as ServiceFactory; }); const backend = createSpecializedBackend({ From 5ef764830708afc0d52ed448478caad45165798f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 18:12:26 +0200 Subject: [PATCH 068/275] backend-app-api: implement handling of default factories is ServiceRegistry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: Johan Haals Signed-off-by: Patrik Oldsberg --- .../src/wiring/ServiceRegistry.test.ts | 75 ++++++++++++++++++- .../src/wiring/ServiceRegistry.ts | 30 +++++--- 2 files changed, 93 insertions(+), 12 deletions(-) diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts index 438a11130f..acdd2a4c41 100644 --- a/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts @@ -26,7 +26,7 @@ const ref1 = createServiceRef<{ x: number; pluginId: string }>({ const sf1 = createServiceFactory({ service: ref1, deps: {}, - factory: async ({}) => { + factory: async () => { return async pluginId => { return { x: 1, pluginId }; }; @@ -39,7 +39,7 @@ const ref2 = createServiceRef<{ x: number; pluginId: string }>({ const sf2 = createServiceFactory({ service: ref2, deps: {}, - factory: async ({}) => { + factory: async () => { return async pluginId => { return { x: 2, pluginId }; }; @@ -48,13 +48,43 @@ const sf2 = createServiceFactory({ const sf2b = createServiceFactory({ service: ref2, deps: {}, - factory: async ({}) => { + factory: async () => { return async pluginId => { return { x: 22, pluginId }; }; }, }); +const refDefault1 = createServiceRef<{ x: number; pluginId: string }>({ + id: '1', + defaultFactory: async service => + createServiceFactory({ + service, + deps: {}, + factory: async () => async pluginId => ({ x: 10, pluginId }), + }), +}); + +const refDefault2a = createServiceRef<{ x: number; pluginId: string }>({ + id: '2a', + defaultFactory: async service => + createServiceFactory({ + service, + deps: {}, + factory: async () => async pluginId => ({ x: 20, pluginId }), + }), +}); + +const refDefault2b = createServiceRef<{ x: number; pluginId: string }>({ + id: '2b', + defaultFactory: async service => + createServiceFactory({ + service, + deps: {}, + factory: async () => async pluginId => ({ x: 220, pluginId }), + }), +}); + describe('ServiceRegistry', () => { it('should return undefined if there is no factory defined', async () => { const registry = new ServiceRegistry([]); @@ -101,4 +131,43 @@ describe('ServiceRegistry', () => { pluginId: 'catalog', }); }); + + it('should return the defaultFactory from the ref if not provided to the registry', async () => { + const registry = new ServiceRegistry([]); + const factory = registry.get(refDefault1)!; + expect(factory).toEqual(expect.any(Function)); + await expect(factory('catalog')).resolves.toEqual({ + x: 10, + pluginId: 'catalog', + }); + }); + + it('should not return the defaultFactory from the ref if provided to the registry', async () => { + const registry = new ServiceRegistry([sf1]); + const factory = registry.get(refDefault1)!; + expect(factory).toEqual(expect.any(Function)); + await expect(factory('catalog')).resolves.toEqual({ + x: 1, + pluginId: 'catalog', + }); + }); + + it('should handle duplicate defaultFactories by duplicating the implementations', async () => { + const registry = new ServiceRegistry([]); + const factoryA = registry.get(refDefault2a)!; + const factoryB = registry.get(refDefault2b)!; + expect(factoryA).toEqual(expect.any(Function)); + expect(factoryB).toEqual(expect.any(Function)); + await expect(factoryA('catalog')).resolves.toEqual({ + x: 20, + pluginId: 'catalog', + }); + await expect(factoryB('catalog')).resolves.toEqual({ + x: 220, + pluginId: 'catalog', + }); + expect(await factoryA('catalog')).toBe(await factoryA('catalog')); + expect(await factoryB('catalog')).toBe(await factoryB('catalog')); + expect(await factoryA('catalog')).not.toBe(await factoryB('catalog')); + }); }); diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.ts index bdaecf30c6..b471cd67ca 100644 --- a/packages/backend-app-api/src/wiring/ServiceRegistry.ts +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.ts @@ -14,35 +14,47 @@ * limitations under the License. */ import { - AnyServiceFactory, + ServiceFactory, FactoryFunc, ServiceRef, } from '@backstage/backend-plugin-api'; export class ServiceRegistry { - readonly #implementations: Map>; - readonly #factories: Map; + readonly #providedFactories: Map; + readonly #loadedDefaultFactories: Map; + readonly #implementations: Map>; - constructor(factories: AnyServiceFactory[]) { - this.#factories = new Map(factories.map(f => [f.service.id, f])); + constructor(factories: ServiceFactory[]) { + this.#providedFactories = new Map(factories.map(f => [f.service.id, f])); + this.#loadedDefaultFactories = new Map(); this.#implementations = new Map(); } get(ref: ServiceRef): FactoryFunc | undefined { - const factory = this.#factories.get(ref.id); - if (!factory) { + let factory = this.#providedFactories.get(ref.id); + const { defaultFactory } = ref; + if (!factory && !defaultFactory) { return undefined; } return async (pluginId: string): Promise => { - let implementations = this.#implementations.get(ref.id); + if (!factory) { + let loadedFactory = this.#loadedDefaultFactories.get(defaultFactory!); + if (!loadedFactory) { + loadedFactory = (await defaultFactory!(ref)) as ServiceFactory; + this.#loadedDefaultFactories.set(defaultFactory!, loadedFactory); + } + factory = loadedFactory; + } + + let implementations = this.#implementations.get(factory); if (implementations) { if (implementations.has(pluginId)) { return implementations.get(pluginId) as T; } } else { implementations = new Map(); - this.#implementations.set(ref.id, implementations); + this.#implementations.set(factory, implementations); } const factoryDeps = Object.fromEntries( From 68513f169a2cf5893bcb7caf7dcaf1914536677b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 18:13:32 +0200 Subject: [PATCH 069/275] changesets: added changeset for default service factories Signed-off-by: Patrik Oldsberg --- .changeset/tame-papayas-protect.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tame-papayas-protect.md diff --git a/.changeset/tame-papayas-protect.md b/.changeset/tame-papayas-protect.md new file mode 100644 index 0000000000..9a0266748a --- /dev/null +++ b/.changeset/tame-papayas-protect.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-plugin-api': patch +--- + +When defining a new `ServiceRef` you can now also include a `defaultFactory`, which will be used to construct instances of the service in case there is no explicit factory defined. From 3c4a3885376e09ae85004f312dc1a034b4f54a03 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 18:18:53 +0200 Subject: [PATCH 070/275] catalog-backend-module-github: enable alpha types build + changeset Signed-off-by: Patrik Oldsberg --- .changeset/gorgeous-swans-kiss.md | 5 +++++ plugins/catalog-backend-module-github/package.json | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/gorgeous-swans-kiss.md diff --git a/.changeset/gorgeous-swans-kiss.md b/.changeset/gorgeous-swans-kiss.md new file mode 100644 index 0000000000..c33eb49d73 --- /dev/null +++ b/.changeset/gorgeous-swans-kiss.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +New experimental alpha exports for use with the upcoming backend system. diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 88a540077e..b9a566fb93 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -9,7 +9,8 @@ "publishConfig": { "access": "public", "main": "dist/index.cjs.js", - "types": "dist/index.d.ts" + "types": "dist/index.d.ts", + "alphaTypes": "dist/index.alpha.d.ts" }, "backstage": { "role": "backend-plugin-module" @@ -24,7 +25,7 @@ "backstage" ], "scripts": { - "build": "backstage-cli package build", + "build": "backstage-cli package build --experimental-type-build", "lint": "backstage-cli package lint", "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", @@ -57,6 +58,7 @@ }, "files": [ "dist", + "alpha", "config.d.ts" ], "configSchema": "config.d.ts" From 62788b2ee8dfe61e990674b87795e57ca8110a19 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 17 Aug 2022 18:20:53 +0200 Subject: [PATCH 071/275] added changeset for CatalogProcessingExtensionPoint update Signed-off-by: Patrik Oldsberg --- .changeset/strong-games-kiss.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/strong-games-kiss.md diff --git a/.changeset/strong-games-kiss.md b/.changeset/strong-games-kiss.md new file mode 100644 index 0000000000..a5f6d5f864 --- /dev/null +++ b/.changeset/strong-games-kiss.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-node': patch +--- + +The experimental `CatalogProcessingExtensionPoint` now accepts multiple providers and processors at once. From f252226b4302f5b9aa55764a392149c96a4573a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 17:40:43 +0000 Subject: [PATCH 072/275] fix(deps): update dependency jose to v4.9.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6f8286da14..0546713a89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16784,9 +16784,9 @@ jose@^4.1.4: integrity sha512-GFcVFQwYQKbQTUOo2JlpFGXTkgBw26uzDsRMD2q1WgSKNSnpKS9Ug7bdQ8dS+p4sZHNH6iRPu6WK2jLIjspaMA== jose@^4.6.0: - version "4.8.3" - resolved "https://registry.npmjs.org/jose/-/jose-4.8.3.tgz#5a754fb4aa5f2806608d083f438e6916b11087da" - integrity sha512-7rySkpW78d8LBp4YU70Wb7+OTgE3OwAALNVZxhoIhp4Kscp+p/fBkdpxGAMKxvCAMV4QfXBU9m6l9nX/vGwd2g== + version "4.9.0" + resolved "https://registry.npmjs.org/jose/-/jose-4.9.0.tgz#98ecaf81b13361d1931c0126e3f765549c782f92" + integrity sha512-RgaqEOZLkVO+ViN3KkN44XJt9g7+wMveUv59sVLaTxONcUPc8ZpfqOCeLphVBZyih2dgkvZ0Ap1CNcokvY7Uyw== joycon@^3.0.1: version "3.1.0" From 8d8bde24f6afe9c74cba5e355435aea994da7dd3 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 17 Aug 2022 12:54:02 -0500 Subject: [PATCH 073/275] Change so edit icon is not visible by default Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .../UserProfileCard/UserProfileCard.test.tsx | 8 ++--- .../User/UserProfileCard/UserProfileCard.tsx | 30 +++++++++---------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx index acbd13703b..f339a5828c 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx @@ -75,7 +75,7 @@ describe('UserSummary Test', () => { }); describe('Edit Button', () => { - it('Should default to disabled', async () => { + it('Should not be present by default', async () => { const userEntity: UserEntity = { apiVersion: 'backstage.io/v1alpha1', kind: 'User', @@ -111,10 +111,10 @@ describe('Edit Button', () => { ), ); - expect(rendered.getByRole('button')).toBeDisabled(); + expect(rendered.queryByTitle('Edit Metadata')).not.toBeInTheDocument(); }); - it('Should be enabled when edit URL annotation is present', async () => { + it('Should be visible when edit URL annotation is present', async () => { const annotations: Record = { 'backstage.io/edit-url': 'https://example.com/user.yaml', }; @@ -153,6 +153,6 @@ describe('Edit Button', () => { }, ), ); - expect(rendered.getByRole('button')).toBeEnabled(); + expect(rendered.getByRole('button')).toBeInTheDocument(); }); }); diff --git a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx index 39565d99d5..dd75578687 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.tsx @@ -75,27 +75,25 @@ export const UserProfileCard = (props: { variant?: InfoCardVariants }) => { kind: 'Group', }); - const infoCardAction = entityMetadataEditUrl ? ( - - - - ) : ( - - - - ); - return ( } subheader={description} variant={props.variant} - action={infoCardAction} + action={ + <> + {entityMetadataEditUrl && ( + + + + )} + + } > From e4049a29b19e444cfeac6f9c1cd89ef04bfabfbb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 18:27:56 +0000 Subject: [PATCH 074/275] chore(deps): update dependency @types/marked to v4.0.4 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0546713a89..d7ddec4a0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7144,9 +7144,9 @@ integrity sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw== "@types/marked@^4.0.0": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/marked/-/marked-4.0.3.tgz#2098f4a77adaba9ce881c9e0b6baf29116e5acc4" - integrity sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg== + version "4.0.4" + resolved "https://registry.npmjs.org/@types/marked/-/marked-4.0.4.tgz#70ca970a59b7b29be47198161dee695dc515dbb2" + integrity sha512-5Yns/jBU+kxoWtTYsSqO0uWw5DGEVuIW10TdnChjzfbOsb4kjku95WB7oJr+ZbWh7dkrNDObFUfbX4KMlBeCGw== "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.10" From f8287e5340b1affeda54975ff44ca60cabdc990a Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Mon, 18 Jul 2022 08:10:16 -0500 Subject: [PATCH 075/275] Added UserSettingsAvailableIconsTable and related documentation Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .../add-icons-links-example.png | Bin 0 -> 6342 bytes docs/getting-started/app-custom-theme.md | 51 ++++++++++++ .../core-app-api/src/app/AppContext.test.tsx | 1 + packages/core-app-api/src/app/AppManager.tsx | 9 +++ packages/core-app-api/src/app/types.ts | 5 ++ .../src/routing/RoutingProvider.test.tsx | 1 + packages/core-plugin-api/api-report.md | 7 ++ .../UserSettingsAvailableIconsTable.tsx | 73 ++++++++++++++++++ .../General/UserSettingsGeneral.tsx | 4 + 9 files changed, 151 insertions(+) create mode 100644 docs/assets/getting-started/add-icons-links-example.png create mode 100644 plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx diff --git a/docs/assets/getting-started/add-icons-links-example.png b/docs/assets/getting-started/add-icons-links-example.png new file mode 100644 index 0000000000000000000000000000000000000000..dfff84b79cf18ae32d48dc8fccc8a7f432963d24 GIT binary patch literal 6342 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 WIX4@k#%lK_*(fc2O_I9xjsF5S|KEB5 literal 0 HcmV?d00001 diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md index 9ca82d01a1..fc39412d61 100644 --- a/docs/getting-started/app-custom-theme.md +++ b/docs/getting-started/app-custom-theme.md @@ -338,6 +338,57 @@ const app = createApp({ [...] ``` +## Adding Icons + +You can add more icons, if the [default icons](https://github.com/backstage/backstage/blob/8d83f5cb4fa0544b0f9160ac22bd5f0f1fe285c6/packages/app-defaults/src/defaults/icons.tsx#L38) do not fit your needs, so that they can be used in other places like for Links in your entities. For this example we'll be using icons from[Material UI](https://v4.mui.com/components/material-icons/) and specifically the `AlarmIcon`. Here's how to do that: + +1. First you will want to open your `App.tsx` in `/packages/app/src` +2. Then you want to import your icon, add this to the rest of your imports: `import AlarmIcon from '@material-ui/icons/Alarm';` +3. Next you want to add the icon like this to your `createApp`: + + ```diff + const app = createApp({ + apis: ..., + plugins: ..., + + icons: { + + alert: AlarmIcon, + + }, + themes: ..., + components: ..., + }); + ``` + +4. Now we can reference `alert` for our icon in our entity links like this: + + ```yaml + apiVersion: backstage.io/v1alpha1 + kind: Component + metadata: + name: artist-lookup + description: Artist Lookup + links: + - url: https://example.com/alert + title: Alerts + icon: alert + ``` + + And this is the result: + + ![Example Link with Alert icon](../assets/getting-started/add-icons-links-example.png) + + Another way you can use these icons is from the `AppContext` like this: + + ```ts + import { useApp } from '@backstage/core-plugin-api'; + + const app = useApp(); + const alertIcon = app.getSystemIcon('alert'); + ``` + + You might want to use this method if you have an icon you want to use in several locations. + +Note: If the icon is not available as one of the default icons or one you've added then it will fall back to Material UI's `LanguageIcon` + ## Custom Homepage In addition to a custom theme, a custom logo, you can also customize the diff --git a/packages/core-app-api/src/app/AppContext.test.tsx b/packages/core-app-api/src/app/AppContext.test.tsx index bc67ee3a9e..a27b7c6f35 100644 --- a/packages/core-app-api/src/app/AppContext.test.tsx +++ b/packages/core-app-api/src/app/AppContext.test.tsx @@ -36,6 +36,7 @@ describe('v1 consumer', () => { getPlugins: jest.fn(), getComponents: jest.fn(), getSystemIcon: jest.fn(), + getSystemIcons: jest.fn(), }; const renderedHook = renderHook(() => useMockAppV1(), { diff --git a/packages/core-app-api/src/app/AppManager.tsx b/packages/core-app-api/src/app/AppManager.tsx index 72c69f7da4..41c57afb98 100644 --- a/packages/core-app-api/src/app/AppManager.tsx +++ b/packages/core-app-api/src/app/AppManager.tsx @@ -71,6 +71,7 @@ import { AppComponents, AppConfigLoader, AppContext, + AppIcons, AppOptions, BackstageApp, SignInPageProps, @@ -153,6 +154,10 @@ class AppContextImpl implements AppContext { return this.app.getSystemIcon(key); } + getSystemIcons(): AppIcons & { [key in string]: IconComponent } { + return this.app.getSystemIcons(); + } + getComponents(): AppComponents { return this.app.getComponents(); } @@ -194,6 +199,10 @@ export class AppManager implements BackstageApp { return this.icons[key]; } + getSystemIcons(): AppIcons & { [key in string]: IconComponent } { + return this.icons; + } + getComponents(): AppComponents { return this.components; } diff --git a/packages/core-app-api/src/app/types.ts b/packages/core-app-api/src/app/types.ts index 979fb0496e..b196e2cf90 100644 --- a/packages/core-app-api/src/app/types.ts +++ b/packages/core-app-api/src/app/types.ts @@ -328,6 +328,11 @@ export type AppContext = { */ getSystemIcon(key: string): IconComponent | undefined; + /** + * Get a list of common and custom icons for this app. + */ + getSystemIcons(): AppIcons & { [key in string]: IconComponent }; + /** * Get the components registered for various purposes in the app. */ diff --git a/packages/core-app-api/src/routing/RoutingProvider.test.tsx b/packages/core-app-api/src/routing/RoutingProvider.test.tsx index dec92072fc..c559c0fff0 100644 --- a/packages/core-app-api/src/routing/RoutingProvider.test.tsx +++ b/packages/core-app-api/src/routing/RoutingProvider.test.tsx @@ -124,6 +124,7 @@ const Extension5 = plugin.provide( const mockContext = { getComponents: () => ({ Progress: () => null } as any), getSystemIcon: jest.fn(), + getSystemIcons: jest.fn(), getPlugins: jest.fn(), }; diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 49e0be3800..e0686596aa 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -149,6 +149,9 @@ export type AppComponents = { export type AppContext = { getPlugins(): BackstagePlugin_2[]; getSystemIcon(key: string): IconComponent_2 | undefined; + getSystemIcons(): AppIcons & { + [key in string]: IconComponent_2; + }; getComponents(): AppComponents; }; @@ -780,4 +783,8 @@ export function withApis(apis: TypesToApiRefs):

    ( (props: React_2.PropsWithChildren>): JSX.Element; displayName: string; }; + +// Warnings were encountered during analysis: +// +// /backstage/dist-types/packages/core-app-api/src/app/types.d.ts:277:5 - (ae-forgotten-export) The symbol "AppIcons" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx b/plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx new file mode 100644 index 0000000000..d0e6034c66 --- /dev/null +++ b/plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx @@ -0,0 +1,73 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { IconComponent, useApp } from '@backstage/core-plugin-api'; +import { Table, TableColumn } from '@backstage/core-components'; + +import { Box } from '@material-ui/core'; +import LanguageIcon from '@material-ui/icons/Language'; +import React from 'react'; + +type SystemIcon = { + key: string; + icon: IconComponent; +}; + +const columns: TableColumn[] = [ + { + title: 'Icon', + field: 'icon', + width: 'auto', + render: (row: Partial) => ( + + {row.icon ? : } + + ), + }, + { + title: 'Key', + field: 'key', + width: 'auto', + defaultSort: 'asc', + }, +]; + +export const UserSettingsAvailableIconsTable = () => { + const app = useApp(); + const systemIcons = app.getSystemIcons(); + const systemIconList: SystemIcon[] = []; + for (const icon in systemIcons) { + if (Object.prototype.hasOwnProperty.call(systemIcons, icon)) { + const sysIcon = { + key: icon, + icon: systemIcons[icon], + }; + systemIconList.push(sysIcon); + } + } + + return ( +

    ?Rt$0=T?>Y5+aYbBxU27k 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

  • + ); +}; diff --git a/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx b/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx index db7fdd7be6..e3a9567164 100644 --- a/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx @@ -18,6 +18,7 @@ import React from 'react'; import { UserSettingsProfileCard } from './UserSettingsProfileCard'; import { UserSettingsAppearanceCard } from './UserSettingsAppearanceCard'; import { UserSettingsIdentityCard } from './UserSettingsIdentityCard'; +import { UserSettingsAvailableIconsTable } from './UserSettingsAvailableIconsTable'; export const UserSettingsGeneral = () => { return ( @@ -31,6 +32,9 @@ export const UserSettingsGeneral = () => { + + + ); }; From 744fea158bed9d1fd675a93ca0edf35ebd5c8109 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Mon, 18 Jul 2022 08:19:45 -0500 Subject: [PATCH 076/275] Added changeset Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/hungry-dogs-agree.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/hungry-dogs-agree.md diff --git a/.changeset/hungry-dogs-agree.md b/.changeset/hungry-dogs-agree.md new file mode 100644 index 0000000000..a8c5b24c25 --- /dev/null +++ b/.changeset/hungry-dogs-agree.md @@ -0,0 +1,6 @@ +--- +'@backstage/core-app-api': patch +'@backstage/plugin-user-settings': patch +--- + +Added Table with List of Available Icons and Documentation on Usage From fc3e132f314421dd62e45c61d7117e5fe210b82e Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Tue, 26 Jul 2022 07:44:20 -0500 Subject: [PATCH 077/275] Fixed API Report Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- packages/core-app-api/api-report.md | 3 +++ packages/core-plugin-api/api-report.md | 29 +++++++++++++++++++---- packages/core-plugin-api/src/app/types.ts | 1 + 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/packages/core-app-api/api-report.md b/packages/core-app-api/api-report.md index beb0d11201..dde4d26364 100644 --- a/packages/core-app-api/api-report.md +++ b/packages/core-app-api/api-report.md @@ -157,6 +157,9 @@ export type AppConfigLoader = () => Promise; export type AppContext = { getPlugins(): BackstagePlugin[]; getSystemIcon(key: string): IconComponent | undefined; + getSystemIcons(): AppIcons & { + [key in string]: IconComponent; + }; getComponents(): AppComponents; }; diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index e0686596aa..facb4235c6 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -155,6 +155,31 @@ export type AppContext = { getComponents(): AppComponents; }; +// @public +export type AppIcons = { + 'kind:api': IconComponent_2; + 'kind:component': IconComponent_2; + 'kind:domain': IconComponent_2; + 'kind:group': IconComponent_2; + 'kind:location': IconComponent_2; + 'kind:system': IconComponent_2; + 'kind:user': IconComponent_2; + brokenImage: IconComponent_2; + catalog: IconComponent_2; + chat: IconComponent_2; + dashboard: IconComponent_2; + docs: IconComponent_2; + email: IconComponent_2; + github: IconComponent_2; + group: IconComponent_2; + help: IconComponent_2; + scaffolder: IconComponent_2; + search: IconComponent_2; + techdocs: IconComponent_2; + user: IconComponent_2; + warning: IconComponent_2; +}; + // @public export type AppTheme = { id: string; @@ -783,8 +808,4 @@ export function withApis(apis: TypesToApiRefs):

    ( (props: React_2.PropsWithChildren>): JSX.Element; displayName: string; }; - -// Warnings were encountered during analysis: -// -// /backstage/dist-types/packages/core-app-api/src/app/types.d.ts:277:5 - (ae-forgotten-export) The symbol "AppIcons" needs to be exported by the entry point index.d.ts ``` diff --git a/packages/core-plugin-api/src/app/types.ts b/packages/core-plugin-api/src/app/types.ts index 2a71eda1f4..17623048e2 100644 --- a/packages/core-plugin-api/src/app/types.ts +++ b/packages/core-plugin-api/src/app/types.ts @@ -24,4 +24,5 @@ export type { ErrorBoundaryFallbackProps, AppComponents, AppContext, + AppIcons, } from '../../../core-app-api/src/app/types'; From e87663dfdcc9e673df5f81ff4bb4cb9e5290aacc Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Tue, 26 Jul 2022 08:13:01 -0500 Subject: [PATCH 078/275] Removed item and updated changeset Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/hungry-dogs-agree.md | 4 +- .../UserSettingsAvailableIconsTable.tsx | 73 ------------------- .../General/UserSettingsGeneral.tsx | 4 - 3 files changed, 2 insertions(+), 79 deletions(-) delete mode 100644 plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx diff --git a/.changeset/hungry-dogs-agree.md b/.changeset/hungry-dogs-agree.md index a8c5b24c25..07d7e41483 100644 --- a/.changeset/hungry-dogs-agree.md +++ b/.changeset/hungry-dogs-agree.md @@ -1,6 +1,6 @@ --- '@backstage/core-app-api': patch -'@backstage/plugin-user-settings': patch +'@backstage/core-plugin-api': patch --- -Added Table with List of Available Icons and Documentation on Usage +Added `getSystemIcons()` function to the `AppManager` that will pull a list of all the icons that have been registered in the App. diff --git a/plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx b/plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx deleted file mode 100644 index d0e6034c66..0000000000 --- a/plugins/user-settings/src/components/General/UserSettingsAvailableIconsTable.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { IconComponent, useApp } from '@backstage/core-plugin-api'; -import { Table, TableColumn } from '@backstage/core-components'; - -import { Box } from '@material-ui/core'; -import LanguageIcon from '@material-ui/icons/Language'; -import React from 'react'; - -type SystemIcon = { - key: string; - icon: IconComponent; -}; - -const columns: TableColumn[] = [ - { - title: 'Icon', - field: 'icon', - width: 'auto', - render: (row: Partial) => ( - - {row.icon ? : } - - ), - }, - { - title: 'Key', - field: 'key', - width: 'auto', - defaultSort: 'asc', - }, -]; - -export const UserSettingsAvailableIconsTable = () => { - const app = useApp(); - const systemIcons = app.getSystemIcons(); - const systemIconList: SystemIcon[] = []; - for (const icon in systemIcons) { - if (Object.prototype.hasOwnProperty.call(systemIcons, icon)) { - const sysIcon = { - key: icon, - icon: systemIcons[icon], - }; - systemIconList.push(sysIcon); - } - } - - return ( -

    - ); -}; diff --git a/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx b/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx index e3a9567164..db7fdd7be6 100644 --- a/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx @@ -18,7 +18,6 @@ import React from 'react'; import { UserSettingsProfileCard } from './UserSettingsProfileCard'; import { UserSettingsAppearanceCard } from './UserSettingsAppearanceCard'; import { UserSettingsIdentityCard } from './UserSettingsIdentityCard'; -import { UserSettingsAvailableIconsTable } from './UserSettingsAvailableIconsTable'; export const UserSettingsGeneral = () => { return ( @@ -32,9 +31,6 @@ export const UserSettingsGeneral = () => { - - - ); }; From f0447ee755e1e1c0571c4dd22fd6f31c3db4b031 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:07:23 -0500 Subject: [PATCH 079/275] Updates based on initial feedback Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/hungry-dogs-agree.md | 2 +- packages/core-app-api/api-report.md | 4 +-- packages/core-app-api/src/app/AppManager.tsx | 5 ++-- packages/core-app-api/src/app/types.ts | 2 +- packages/core-plugin-api/api-report.md | 29 +------------------- packages/core-plugin-api/src/app/types.ts | 1 - 6 files changed, 6 insertions(+), 37 deletions(-) diff --git a/.changeset/hungry-dogs-agree.md b/.changeset/hungry-dogs-agree.md index 07d7e41483..b111b6e463 100644 --- a/.changeset/hungry-dogs-agree.md +++ b/.changeset/hungry-dogs-agree.md @@ -3,4 +3,4 @@ '@backstage/core-plugin-api': patch --- -Added `getSystemIcons()` function to the `AppManager` that will pull a list of all the icons that have been registered in the App. +Added `getSystemIcons()` function to the `AppContext` available through `useApp` that will pull a list of all the icons that have been registered in the App. diff --git a/packages/core-app-api/api-report.md b/packages/core-app-api/api-report.md index dde4d26364..3cc1f4a8a8 100644 --- a/packages/core-app-api/api-report.md +++ b/packages/core-app-api/api-report.md @@ -157,9 +157,7 @@ export type AppConfigLoader = () => Promise; export type AppContext = { getPlugins(): BackstagePlugin[]; getSystemIcon(key: string): IconComponent | undefined; - getSystemIcons(): AppIcons & { - [key in string]: IconComponent; - }; + getSystemIcons(): Record; getComponents(): AppComponents; }; diff --git a/packages/core-app-api/src/app/AppManager.tsx b/packages/core-app-api/src/app/AppManager.tsx index 41c57afb98..f36d37f796 100644 --- a/packages/core-app-api/src/app/AppManager.tsx +++ b/packages/core-app-api/src/app/AppManager.tsx @@ -71,7 +71,6 @@ import { AppComponents, AppConfigLoader, AppContext, - AppIcons, AppOptions, BackstageApp, SignInPageProps, @@ -154,7 +153,7 @@ class AppContextImpl implements AppContext { return this.app.getSystemIcon(key); } - getSystemIcons(): AppIcons & { [key in string]: IconComponent } { + getSystemIcons(): Record { return this.app.getSystemIcons(); } @@ -199,7 +198,7 @@ export class AppManager implements BackstageApp { return this.icons[key]; } - getSystemIcons(): AppIcons & { [key in string]: IconComponent } { + getSystemIcons(): Record { return this.icons; } diff --git a/packages/core-app-api/src/app/types.ts b/packages/core-app-api/src/app/types.ts index b196e2cf90..39bf9c0554 100644 --- a/packages/core-app-api/src/app/types.ts +++ b/packages/core-app-api/src/app/types.ts @@ -331,7 +331,7 @@ export type AppContext = { /** * Get a list of common and custom icons for this app. */ - getSystemIcons(): AppIcons & { [key in string]: IconComponent }; + getSystemIcons(): Record; /** * Get the components registered for various purposes in the app. diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index facb4235c6..87fc344a02 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -149,37 +149,10 @@ export type AppComponents = { export type AppContext = { getPlugins(): BackstagePlugin_2[]; getSystemIcon(key: string): IconComponent_2 | undefined; - getSystemIcons(): AppIcons & { - [key in string]: IconComponent_2; - }; + getSystemIcons(): Record; getComponents(): AppComponents; }; -// @public -export type AppIcons = { - 'kind:api': IconComponent_2; - 'kind:component': IconComponent_2; - 'kind:domain': IconComponent_2; - 'kind:group': IconComponent_2; - 'kind:location': IconComponent_2; - 'kind:system': IconComponent_2; - 'kind:user': IconComponent_2; - brokenImage: IconComponent_2; - catalog: IconComponent_2; - chat: IconComponent_2; - dashboard: IconComponent_2; - docs: IconComponent_2; - email: IconComponent_2; - github: IconComponent_2; - group: IconComponent_2; - help: IconComponent_2; - scaffolder: IconComponent_2; - search: IconComponent_2; - techdocs: IconComponent_2; - user: IconComponent_2; - warning: IconComponent_2; -}; - // @public export type AppTheme = { id: string; diff --git a/packages/core-plugin-api/src/app/types.ts b/packages/core-plugin-api/src/app/types.ts index 17623048e2..2a71eda1f4 100644 --- a/packages/core-plugin-api/src/app/types.ts +++ b/packages/core-plugin-api/src/app/types.ts @@ -24,5 +24,4 @@ export type { ErrorBoundaryFallbackProps, AppComponents, AppContext, - AppIcons, } from '../../../core-app-api/src/app/types'; From 0094d8ae943cefde2f56266192ee0a5bf0467d16 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 17 Aug 2022 14:08:09 -0500 Subject: [PATCH 080/275] Refactor icon section based on recent changes Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/getting-started/app-custom-theme.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md index fc39412d61..25131f1c91 100644 --- a/docs/getting-started/app-custom-theme.md +++ b/docs/getting-started/app-custom-theme.md @@ -273,18 +273,22 @@ const LogoFull = () => { }; ``` -## Custom Icons +## Icons + +So far you've seen how to create your own theme and add your own logo, in the following sections you'll be shown how to override the existing icons and how to add more icons + +### Custom Icons You can also customize the Project's _default_ icons. You can change the following [icons](https://github.com/backstage/backstage/blob/master/packages/app-defaults/src/defaults/icons.tsx). -### Requirements +#### Requirements - Files in `.svg` format - React components created for the icons -### Create React Component +#### Create React Component In your front-end application, locate the `src` folder. We suggest creating the `assets/icons` directory and `CustomIcons.tsx` file. @@ -309,7 +313,7 @@ export const ExampleIcon = (props: SvgIconProps) => ( ); ``` -### Using the custom icon +#### Using the custom icon Supply your custom icon in `packages/app/src/App.tsx` @@ -338,9 +342,9 @@ const app = createApp({ [...] ``` -## Adding Icons +### Adding Icons -You can add more icons, if the [default icons](https://github.com/backstage/backstage/blob/8d83f5cb4fa0544b0f9160ac22bd5f0f1fe285c6/packages/app-defaults/src/defaults/icons.tsx#L38) do not fit your needs, so that they can be used in other places like for Links in your entities. For this example we'll be using icons from[Material UI](https://v4.mui.com/components/material-icons/) and specifically the `AlarmIcon`. Here's how to do that: +You can add more icons, if the [default icons](https://github.com/backstage/backstage/blob/master/packages/app-defaults/src/defaults/icons.tsx) do not fit your needs, so that they can be used in other places like for Links in your entities. For this example we'll be using icons from[Material UI](https://v4.mui.com/components/material-icons/) and specifically the `AlarmIcon`. Here's how to do that: 1. First you will want to open your `App.tsx` in `/packages/app/src` 2. Then you want to import your icon, add this to the rest of your imports: `import AlarmIcon from '@material-ui/icons/Alarm';` From 90d2e9ef70cbeaf2db601120e78cd7ec0d1740b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 19:10:16 +0000 Subject: [PATCH 081/275] fix(deps): update dependency aws-sdk to v2.1197.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d7ddec4a0d..b40372873a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8982,9 +8982,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: - version "2.1196.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1196.0.tgz#28951e1c742373397514f295f742eb3a9497c02d" - integrity sha512-iOGhCY5IqGfHCJ70p0H/uxkXDh/96KanAMfhnGGbIKbpVliuEV7SYxTfsWORaaUHey+N8FE6OMKfzo7F4X+wQg== + version "2.1197.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1197.0.tgz#d679f52353f03e598ffed5609ed65593cef1f83f" + integrity sha512-BUxYU+gzxCylEM37NeGcS5kWotXVmKrOBG9+/+U+tnOTW7/3yNBrBfhPrs5IgMhm7H38CLWgOqwJaGDlYzwH/Q== dependencies: buffer "4.9.2" events "1.1.1" From 3b25c3a1406a60b8b082bcd33d0743ee6b7d5856 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 19:11:31 +0000 Subject: [PATCH 082/275] fix(deps): update dependency swagger-ui-react to v4.14.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d7ddec4a0d..8ead17f4b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24645,9 +24645,9 @@ swagger-client@^3.18.5: url "~0.11.0" swagger-ui-react@^4.11.1: - version "4.13.2" - resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.13.2.tgz#dee4f42dae9ca8b9ac85e64a46fc12c694100a80" - integrity sha512-U3IarPb0Vyi5/bHb45Q8uWf/7fowPp3B+LeYF0VKB4xhgKNiaPypPHoSJW9oCse/lkFGd4ZKyqBOpYXCsWMcgA== + version "4.14.0" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.14.0.tgz#c1a26955d8481ad024eada6e1d59c44d0b061ab1" + integrity sha512-Yz3E5a5ujj2jqI4V+OELUjgs04uGNkJxbFLTe9KyrSs37yeMsyoDwLRGWuAAP6BRLhonJzLeZRTbnD2cK+iVew== dependencies: "@babel/runtime-corejs3" "^7.18.9" "@braintree/sanitize-url" "=6.0.0" From 6698472eac02e6b434ef39c82339a6627241cd59 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 22:44:40 +0000 Subject: [PATCH 083/275] fix(deps): update dependency @octokit/webhooks to v10.1.4 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 249db80316..d85c17cd90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5713,19 +5713,19 @@ resolved "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-3.0.0.tgz#4f4443605233f46abc5f85a857ba105095aa1181" integrity sha512-FAIyAchH9JUKXugKMC17ERAXM/56vVJekwXOON46pmUDYfU7uXB4cFY8yc8nYr5ABqVI7KjRKfFt3mZF7OcyUA== -"@octokit/webhooks-types@6.3.4": - version "6.3.4" - resolved "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.3.4.tgz#b553da7479edfb04218160c85f16dbbc68251533" - integrity sha512-9E0HNgHqc5v22+9IzCSEZ9iXnBJ/n+GM9gZye0kp7XmzcOfrnAKZzd4km269n6/vVOkmXwT11DbbQFukWOvbdw== +"@octokit/webhooks-types@6.3.5": + version "6.3.5" + resolved "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.3.5.tgz#e0812abc74d27fd7443f28c0cfc527214bb5ee66" + integrity sha512-2QZkDXC3I3TO0mpI/VaqP+aeEvYm//Slkcsve24ezPCNA22HuekBaoEU92HF3WvciFEzWWv0e/E2SMVZcCaBZw== "@octokit/webhooks@^10.0.0": - version "10.1.3" - resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.1.3.tgz#415bb4f826167b15da4dede81c14cb7a8978ac9a" - integrity sha512-c5uQW0HJbI5mcQpUFcM7LVs1gbdEiHD6OLXZcwxLJeNUmI8Cy9uzfCib6HguARKgnz3tSavYX/teHq7brm05iQ== + version "10.1.4" + resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.1.4.tgz#c16803312d6102425f464529ff52bccea03ea034" + integrity sha512-MVu56s7x9Me4gT/YpR1f2pzWDJNciTMdM3subCA5H8qZcvqInIdnssaxwLp1ep/JbeFhvkYWNHfPeLtwdGg3rQ== dependencies: "@octokit/request-error" "^3.0.0" "@octokit/webhooks-methods" "^3.0.0" - "@octokit/webhooks-types" "6.3.4" + "@octokit/webhooks-types" "6.3.5" aggregate-error "^3.1.0" "@open-draft/until@^1.0.3": From f4144dcc98750370b2d521df6698365b80a27342 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 22:46:31 +0000 Subject: [PATCH 084/275] fix(deps): update dependency graphiql to v1.11.5 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 249db80316..ff2ed8cc8d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14538,9 +14538,9 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12, graphiql@^1.8.8: - version "1.11.4" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.11.4.tgz#c84f39dbc7379fef62bc0ff98c9af86bfbce3241" - integrity sha512-yPjEPssKp6mo91q2zjSs6WUpiGm37r396OSHnfSVn0bE4jOMBtB2sbjzwe0GVKZeY3MpfZjpK0UFGrS05wb+qw== + version "1.11.5" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.11.5.tgz#daf0de27b704f17c9d87ce56eea0fdcd7a370269" + integrity sha512-NI92XdSVwXTsqzJc6ykaAkKVMeC8IRRp3XzkxVQwtqDsZlVKtR2ZnssXNYt05TMGbi1ehoipn9tFywVohOlHjg== dependencies: "@graphiql/react" "^0.10.0" "@graphiql/toolkit" "^0.6.1" From b9d346cce31ffcd77e14959862df0dc9e185d53e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 23:28:46 +0000 Subject: [PATCH 085/275] chore(deps): update dependency @types/marked to v4.0.5 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8b3d1b2f1d..e697cffa41 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7144,9 +7144,9 @@ integrity sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw== "@types/marked@^4.0.0": - version "4.0.4" - resolved "https://registry.npmjs.org/@types/marked/-/marked-4.0.4.tgz#70ca970a59b7b29be47198161dee695dc515dbb2" - integrity sha512-5Yns/jBU+kxoWtTYsSqO0uWw5DGEVuIW10TdnChjzfbOsb4kjku95WB7oJr+ZbWh7dkrNDObFUfbX4KMlBeCGw== + version "4.0.5" + resolved "https://registry.npmjs.org/@types/marked/-/marked-4.0.5.tgz#3e900fa331a9b1a98f7a8a50f0f39b4bf2b6469f" + integrity sha512-jMN2moJ+lSf1VZXQo3VXeMCjoXuciVONig8+U0YNBop5aBvQw4qkolx1Nzn1i0T8L2l9IZ3jju6bS1pPwlaY1w== "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.10" From b29c44d8958b2414b1feb1cb8477fc61dadf805e Mon Sep 17 00:00:00 2001 From: John Philip Date: Wed, 17 Aug 2022 21:19:11 -0400 Subject: [PATCH 086/275] Autogenerate ids for headings in markdown content Signed-off-by: John Philip --- .changeset/lazy-snakes-film.md | 5 ++++ .../MarkdownContent/MarkdownContent.test.tsx | 30 +++++++++++++++++++ .../MarkdownContent/MarkdownContent.tsx | 19 ++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 .changeset/lazy-snakes-film.md diff --git a/.changeset/lazy-snakes-film.md b/.changeset/lazy-snakes-film.md new file mode 100644 index 0000000000..a21d197c51 --- /dev/null +++ b/.changeset/lazy-snakes-film.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': minor +--- + +Adds code to autogenerate ids for headers parsed through the MarkdownContent component. diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx index 9c08b83c40..fa8cb35ca8 100644 --- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx +++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx @@ -100,4 +100,34 @@ describe('', () => { 'https://example.com/blog/assets/6/header.png', ); }); + + it('render MarkdownContent component with headings given proper ids', async () => { + const rendered = await renderWithEffects( + wrapInTestApp( + , + ), + ); + + expect(rendered.getByText('Lorem ipsum').getAttribute('id')).toEqual( + 'lorem-ipsum', + ); + expect(rendered.getByText('bing bong').getAttribute('id')).toEqual( + 'bing-bong', + ); + expect( + rendered + .getByText( + 'The FitnessGram Pacer Test is a multistage aerobic capacity test', + ) + .getAttribute('id'), + ).toEqual( + 'the-fitnessgram-pacer-test-is-a-multistage-aerobic-capacity-test', + ); + }); }); diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx index 013e81817a..e2ee460a1f 100644 --- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx +++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx @@ -73,6 +73,19 @@ type Props = { className?: string; }; +const flatten = (text, child) => { + return typeof child === 'string' + ? text + child + : React.Children.toArray(child.props.children).reduce(flatten, text); +}; + +const headingRenderer = ({ level, children }) => { + const childrenArray = React.Children.toArray(children); + const text = childrenArray.reduce(flatten, ''); + const slug = text.toLocaleLowerCase('en-US').replace(/\W/g, '-'); + return React.createElement(`h${level}`, { id: slug }, children); +}; + const components: Options['components'] = { code: ({ inline, className, children, ...props }) => { const text = String(children).replace(/\n+$/, ''); @@ -85,6 +98,12 @@ const components: Options['components'] = { ); }, + h1: headingRenderer, + h2: headingRenderer, + h3: headingRenderer, + h4: headingRenderer, + h5: headingRenderer, + h6: headingRenderer, }; /** From e51cddd5fbba7df09203a19be7e391f0a5012012 Mon Sep 17 00:00:00 2001 From: John Philip Date: Wed, 17 Aug 2022 22:46:38 -0400 Subject: [PATCH 087/275] Changed types to be more specific Signed-off-by: John Philip --- .../src/components/MarkdownContent/MarkdownContent.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx index e2ee460a1f..d97172bf75 100644 --- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx +++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx @@ -20,6 +20,7 @@ import gfm from 'remark-gfm'; import React from 'react'; import { BackstageTheme } from '@backstage/theme'; import { CodeSnippet } from '../CodeSnippet'; +import { HeadingProps } from 'react-markdown/lib/ast-to-react'; export type MarkdownContentClassKey = 'markdown'; @@ -73,13 +74,15 @@ type Props = { className?: string; }; -const flatten = (text, child) => { +const flatten = (text: string, child: any): string => { + if (!child) return text; + return typeof child === 'string' ? text + child : React.Children.toArray(child.props.children).reduce(flatten, text); }; -const headingRenderer = ({ level, children }) => { +const headingRenderer = ({ level, children }: HeadingProps) => { const childrenArray = React.Children.toArray(children); const text = childrenArray.reduce(flatten, ''); const slug = text.toLocaleLowerCase('en-US').replace(/\W/g, '-'); From de3347ca74f341881910f9c8fb306629d6f4219c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 18 Aug 2022 10:24:51 +0200 Subject: [PATCH 088/275] added changeset for updates usages of ServiceFactory Signed-off-by: Patrik Oldsberg --- .changeset/spicy-cherries-remember.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/spicy-cherries-remember.md diff --git a/.changeset/spicy-cherries-remember.md b/.changeset/spicy-cherries-remember.md new file mode 100644 index 0000000000..c742c7a1e8 --- /dev/null +++ b/.changeset/spicy-cherries-remember.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-app-api': patch +'@backstage/backend-defaults': patch +'@backstage/backend-test-utils': patch +--- + +Updated usages of `ServiceFactory`. From f007be3621d6712cd250ee34d0789cfab199e55f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 18 Aug 2022 11:27:00 +0200 Subject: [PATCH 089/275] Update docs/overview/threat-model.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Signed-off-by: Patrik Oldsberg --- docs/overview/threat-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index 447e914b3b..1a93a2ee65 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -6,7 +6,7 @@ description: A document describing the threat model for Backstage. The threat model outlines key security considerations of Backstage for operators, developers and security researchers. This is a living document and will evolve and be expanded alongside the Backstage project as relevant. -See [Security Policy and Advisories](https://github.com/backstage/backstage/security) in the Backstage Github repository for details on reporting security vulnerabilities and advisories on fixed security flaws. +See [Security Policy and Advisories](https://github.com/backstage/backstage/security) in the Backstage GitHub repository for details on reporting security vulnerabilities and advisories on fixed security flaws. ## Trust Model From d3ddd3ef44159d319d98f7064361091462b53302 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 18 Aug 2022 12:08:33 +0200 Subject: [PATCH 090/275] Update packages/backend-plugin-api/src/services/system/types.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Signed-off-by: Patrik Oldsberg --- packages/backend-plugin-api/src/services/system/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-plugin-api/src/services/system/types.ts b/packages/backend-plugin-api/src/services/system/types.ts index dcd047c63d..3d6ebfc0dd 100644 --- a/packages/backend-plugin-api/src/services/system/types.ts +++ b/packages/backend-plugin-api/src/services/system/types.ts @@ -30,7 +30,7 @@ export type ServiceRef = { /** * The default factory that will be used to create service - * instances if not other factory is provided. + * instances if no other factory is provided. */ defaultFactory?: (service: ServiceRef) => Promise>; From e83de28e36fb3e4464f0f624795f5064ff1cc989 Mon Sep 17 00:00:00 2001 From: Tim Jacomb <21194782+timja@users.noreply.github.com> Date: Thu, 18 Aug 2022 09:59:14 +0100 Subject: [PATCH 091/275] Fix typo in create-app package Signed-off-by: Tim Jacomb <21194782+timja@users.noreply.github.com> --- .changeset/happy-kiwis-look.md | 5 +++++ .../default-app/packages/backend/src/plugins/auth.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/happy-kiwis-look.md diff --git a/.changeset/happy-kiwis-look.md b/.changeset/happy-kiwis-look.md new file mode 100644 index 0000000000..c7c82954ee --- /dev/null +++ b/.changeset/happy-kiwis-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Fix typo diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/auth.ts b/packages/create-app/templates/default-app/packages/backend/src/plugins/auth.ts index 159116d7b8..77eb6aae21 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/plugins/auth.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/auth.ts @@ -25,7 +25,7 @@ export default async function createPlugin( // This particular resolver makes all users share a single "guest" identity. // It should only be used for testing and trying out Backstage. // - // If you want to use a production ready resolver you can switch to the + // If you want to use a production ready resolver you can switch to // the one that is commented out below, it looks up a user entity in the // catalog using the GitHub username of the authenticated user. // That resolver requires you to have user entities populated in the catalog, From 4c82b955fcf4df90cd797af5d48a9fae6e8d4eb0 Mon Sep 17 00:00:00 2001 From: Tim Jacomb <21194782+timja@users.noreply.github.com> Date: Thu, 18 Aug 2022 11:54:02 +0100 Subject: [PATCH 092/275] Typo in README for catalog-backend-module-msgraph Signed-off-by: Tim Jacomb <21194782+timja@users.noreply.github.com> --- .changeset/witty-cats-wink.md | 5 +++++ plugins/catalog-backend-module-msgraph/README.md | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/witty-cats-wink.md diff --git a/.changeset/witty-cats-wink.md b/.changeset/witty-cats-wink.md new file mode 100644 index 0000000000..82f6d3098f --- /dev/null +++ b/.changeset/witty-cats-wink.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +Fix typo diff --git a/plugins/catalog-backend-module-msgraph/README.md b/plugins/catalog-backend-module-msgraph/README.md index 23166a755d..fe2e568b5a 100644 --- a/plugins/catalog-backend-module-msgraph/README.md +++ b/plugins/catalog-backend-module-msgraph/README.md @@ -80,7 +80,7 @@ catalog: # See https://docs.microsoft.com/en-us/graph/search-query-parameter search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")' # Optional select for groups, this will allow you work with schemaExtensions - # in order to add extra information to your groups that can be used on you custom groupTransformers + # in order to add extra information to your groups that can be used on your custom groupTransformers # See https://docs.microsoft.com/en-us/graph/api/resources/schemaextension?view=graph-rest-1.0 select: ['id', 'displayName', 'description'] ``` From c8bb0ff8ce655f868e7bc67385087ed51b955641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 18 Aug 2022 13:30:02 +0200 Subject: [PATCH 093/275] just some :broom: api cleaning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/wild-sheep-roll.md | 8 ++ packages/core-components/api-report.md | 14 +--- .../Sidebar/SidebarOpenStateContext.tsx | 26 +++---- .../layout/Sidebar/SidebarPinStateContext.tsx | 31 ++++---- plugins/adr/api-report.md | 28 ++----- .../src/components/AdrReader/AdrReader.tsx | 7 +- .../EntityAdrContent/EntityAdrContent.tsx | 6 +- .../src/search/AdrSearchResultListItem.tsx | 14 ++-- plugins/apache-airflow/api-report.md | 4 +- .../DagTableComponent/DagTableComponent.tsx | 3 +- plugins/api-docs/api-report.md | 75 ++++++------------- .../ApiDefinitionCard/ApiTypeTitle.tsx | 6 +- .../components/ApisCards/ConsumedApisCard.tsx | 10 +-- .../src/components/ApisCards/HasApisCard.tsx | 10 +-- .../components/ApisCards/ProvidedApisCard.tsx | 10 +-- .../ConsumingComponentsCard.tsx | 10 ++- .../ProvidingComponentsCard.tsx | 7 +- plugins/api-docs/src/plugin.ts | 7 ++ 18 files changed, 118 insertions(+), 158 deletions(-) create mode 100644 .changeset/wild-sheep-roll.md diff --git a/.changeset/wild-sheep-roll.md b/.changeset/wild-sheep-roll.md new file mode 100644 index 0000000000..1551100b2a --- /dev/null +++ b/.changeset/wild-sheep-roll.md @@ -0,0 +1,8 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-adr': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-api-docs': patch +--- + +Minor cleanup of the public API surface to reduce the number of warnings diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index 1cdba47257..3dc4e2848e 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -987,13 +987,10 @@ export type SidebarOpenState = { }; // @public -export const SidebarOpenStateProvider: ({ - children, - value, -}: { +export function SidebarOpenStateProvider(props: { children: ReactNode; value: SidebarOpenState; -}) => JSX.Element; +}): JSX.Element; // @public (undocumented) export type SidebarOptions = { @@ -1034,13 +1031,10 @@ export type SidebarPinStateContextType = { }; // @public -export const SidebarPinStateProvider: ({ - children, - value, -}: { +export function SidebarPinStateProvider(props: { children: ReactNode; value: SidebarPinStateContextType; -}) => JSX.Element; +}): JSX.Element; // @public (undocumented) export type SidebarProps = { diff --git a/packages/core-components/src/layout/Sidebar/SidebarOpenStateContext.tsx b/packages/core-components/src/layout/Sidebar/SidebarOpenStateContext.tsx index 7cb0e5b2c3..36e87b07a2 100644 --- a/packages/core-components/src/layout/Sidebar/SidebarOpenStateContext.tsx +++ b/packages/core-components/src/layout/Sidebar/SidebarOpenStateContext.tsx @@ -74,21 +74,21 @@ const VersionedSidebarContext = createVersionedContext<{ * * @public */ -export const SidebarOpenStateProvider = ({ - children, - value, -}: { +export function SidebarOpenStateProvider(props: { children: ReactNode; value: SidebarOpenState; -}) => ( - - - {children} - - -); +}) { + const { children, value } = props; + return ( + + + {children} + + + ); +} /** * Hook to read and update the sidebar's open state, which controls whether or diff --git a/packages/core-components/src/layout/Sidebar/SidebarPinStateContext.tsx b/packages/core-components/src/layout/Sidebar/SidebarPinStateContext.tsx index e00ed259e9..9c58a32732 100644 --- a/packages/core-components/src/layout/Sidebar/SidebarPinStateContext.tsx +++ b/packages/core-components/src/layout/Sidebar/SidebarPinStateContext.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { createVersionedContext, createVersionedValueMap, @@ -22,8 +23,8 @@ import React, { createContext, ReactNode, useContext } from 'react'; /** * Type of `SidebarPinStateContext` * - * @public @deprecated - * Use `SidebarPinState` instead. + * @public + * @deprecated Use `SidebarPinState` instead. */ export type SidebarPinStateContextType = { isPinned: boolean; @@ -80,21 +81,21 @@ const VersionedSidebarPinStateContext = createVersionedContext<{ * * @public */ -export const SidebarPinStateProvider = ({ - children, - value, -}: { +export function SidebarPinStateProvider(props: { children: ReactNode; value: SidebarPinStateContextType; -}) => ( - - - {children} - - -); +}) { + const { children, value } = props; + return ( + + + {children} + + + ); +} /** * Hook to read and update sidebar pin state, which controls whether or not the diff --git a/plugins/adr/api-report.md b/plugins/adr/api-report.md index 5059d51023..ecec0c0dd5 100644 --- a/plugins/adr/api-report.md +++ b/plugins/adr/api-report.md @@ -31,13 +31,7 @@ export const adrPlugin: BackstagePlugin< // @public export const AdrReader: { - ({ - adr, - decorators, - }: { - adr: string; - decorators?: AdrContentDecorator[] | undefined; - }): JSX.Element; + (props: { adr: string; decorators?: AdrContentDecorator[] }): JSX.Element; decorators: Readonly<{ createRewriteRelativeLinksDecorator(): AdrContentDecorator; createRewriteRelativeEmbedsDecorator(): AdrContentDecorator; @@ -45,23 +39,15 @@ export const AdrReader: { }; // @public -export const AdrSearchResultListItem: ({ - lineClamp, - highlight, - rank, - result, -}: { - lineClamp?: number | undefined; - highlight?: ResultHighlight | undefined; - rank?: number | undefined; +export function AdrSearchResultListItem(props: { + lineClamp?: number; + highlight?: ResultHighlight; + rank?: number; result: AdrDocument; -}) => JSX.Element; +}): JSX.Element; // @public -export const EntityAdrContent: ({ - contentDecorators, - filePathFilterFn, -}: { +export const EntityAdrContent: (props: { contentDecorators?: AdrContentDecorator[] | undefined; filePathFilterFn?: AdrFilePathFilterFn | undefined; }) => JSX.Element; diff --git a/plugins/adr/src/components/AdrReader/AdrReader.tsx b/plugins/adr/src/components/AdrReader/AdrReader.tsx index ae7dc6c271..3667d8fd8c 100644 --- a/plugins/adr/src/components/AdrReader/AdrReader.tsx +++ b/plugins/adr/src/components/AdrReader/AdrReader.tsx @@ -32,15 +32,14 @@ import { AdrContentDecorator } from './types'; /** * Component to fetch and render an ADR. + * * @public */ -export const AdrReader = ({ - adr, - decorators, -}: { +export const AdrReader = (props: { adr: string; decorators?: AdrContentDecorator[]; }) => { + const { adr, decorators } = props; const { entity } = useEntity(); const scmIntegrations = useApi(scmIntegrationsApiRef); const adrLocationUrl = getAdrLocationUrl(entity, scmIntegrations); diff --git a/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx b/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx index bd8e4be3cf..37344cecca 100644 --- a/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx +++ b/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx @@ -58,13 +58,11 @@ const useStyles = makeStyles((theme: Theme) => ({ * Component for browsing ADRs on an entity page. * @public */ -export const EntityAdrContent = ({ - contentDecorators, - filePathFilterFn, -}: { +export const EntityAdrContent = (props: { contentDecorators?: AdrContentDecorator[]; filePathFilterFn?: AdrFilePathFilterFn; }) => { + const { contentDecorators, filePathFilterFn } = props; const classes = useStyles(); const { entity } = useEntity(); const rootLink = useRouteRef(rootRouteRef); diff --git a/plugins/adr/src/search/AdrSearchResultListItem.tsx b/plugins/adr/src/search/AdrSearchResultListItem.tsx index e9e05a9df2..d76f2cca4e 100644 --- a/plugins/adr/src/search/AdrSearchResultListItem.tsx +++ b/plugins/adr/src/search/AdrSearchResultListItem.tsx @@ -43,20 +43,16 @@ const useStyles = makeStyles({ }); /** - * A component to display a ADR search result + * A component to display an ADR search result. * @public */ -export const AdrSearchResultListItem = ({ - lineClamp = 5, - highlight, - rank, - result, -}: { +export function AdrSearchResultListItem(props: { lineClamp?: number; highlight?: ResultHighlight; rank?: number; result: AdrDocument; -}) => { +}) { + const { lineClamp = 5, highlight, rank, result } = props; const classes = useStyles(); const analytics = useAnalytics(); @@ -122,4 +118,4 @@ export const AdrSearchResultListItem = ({ ); -}; +} diff --git a/plugins/apache-airflow/api-report.md b/plugins/apache-airflow/api-report.md index 428f3238e8..2f03d34205 100644 --- a/plugins/apache-airflow/api-report.md +++ b/plugins/apache-airflow/api-report.md @@ -9,9 +9,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; // @public -export const ApacheAirflowDagTable: ({ - dagIds, -}: { +export const ApacheAirflowDagTable: (props: { dagIds?: string[] | undefined; }) => JSX.Element; diff --git a/plugins/apache-airflow/src/components/DagTableComponent/DagTableComponent.tsx b/plugins/apache-airflow/src/components/DagTableComponent/DagTableComponent.tsx index 2514d70d45..fcd87b2020 100644 --- a/plugins/apache-airflow/src/components/DagTableComponent/DagTableComponent.tsx +++ b/plugins/apache-airflow/src/components/DagTableComponent/DagTableComponent.tsx @@ -134,7 +134,8 @@ type DagTableComponentProps = { dagIds?: string[]; }; -export const DagTableComponent = ({ dagIds }: DagTableComponentProps) => { +export const DagTableComponent = (props: DagTableComponentProps) => { + const { dagIds } = props; const apiClient = useApi(apacheAirflowApiRef); const { value, loading, error } = useAsync(async (): Promise => { diff --git a/plugins/api-docs/api-report.md b/plugins/api-docs/api-report.md index e32a529df2..9f226e52c7 100644 --- a/plugins/api-docs/api-report.md +++ b/plugins/api-docs/api-report.md @@ -58,21 +58,13 @@ export const ApiExplorerIndexPage: ( props: DefaultApiExplorerPageProps, ) => JSX.Element; -// Warning: (ae-missing-release-tag) "ApiExplorerPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ApiExplorerPage: ( props: DefaultApiExplorerPageProps, ) => JSX.Element; -// Warning: (ae-missing-release-tag) "ApiTypeTitle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const ApiTypeTitle: ({ - apiEntity, -}: { - apiEntity: ApiEntity; -}) => JSX.Element; +export const ApiTypeTitle: (props: { apiEntity: ApiEntity }) => JSX.Element; // Warning: (ae-missing-release-tag) "AsyncApiDefinitionWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -88,17 +80,15 @@ export type AsyncApiDefinitionWidgetProps = { definition: string; }; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ConsumedApisCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const ConsumedApisCard: ({ variant }: Props) => JSX.Element; +export const ConsumedApisCard: (props: { + variant?: InfoCardVariants; +}) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ConsumingComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const ConsumingComponentsCard: ({ variant }: Props_4) => JSX.Element; +export const ConsumingComponentsCard: (props: { + variant?: InfoCardVariants; +}) => JSX.Element; // @public export const DefaultApiExplorerPage: ({ @@ -119,53 +109,31 @@ export type DefaultApiExplorerPageProps = { // @public (undocumented) export function defaultDefinitionWidgets(): ApiDefinitionWidget[]; -// Warning: (ae-missing-release-tag) "EntityApiDefinitionCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityApiDefinitionCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityConsumedApisCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityConsumedApisCard: ({ - variant, -}: { +export const EntityConsumedApisCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityConsumingComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityConsumingComponentsCard: ({ - variant, -}: { +export const EntityConsumingComponentsCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityHasApisCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityHasApisCard: ({ - variant, -}: { +export const EntityHasApisCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityProvidedApisCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityProvidedApisCard: ({ - variant, -}: { +export const EntityProvidedApisCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityProvidingComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityProvidingComponentsCard: ({ - variant, -}: { +export const EntityProvidingComponentsCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; @@ -183,11 +151,10 @@ export type GraphQlDefinitionWidgetProps = { definition: string; }; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "HasApisCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const HasApisCard: ({ variant }: Props_2) => JSX.Element; +export const HasApisCard: (props: { + variant?: InfoCardVariants; +}) => JSX.Element; // Warning: (ae-missing-release-tag) "OpenApiDefinitionWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -218,15 +185,15 @@ export type PlainApiDefinitionWidgetProps = { language: string; }; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ProvidedApisCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const ProvidedApisCard: ({ variant }: Props_3) => JSX.Element; +export const ProvidedApisCard: (props: { + variant?: InfoCardVariants; +}) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "ProvidingComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const ProvidingComponentsCard: ({ variant }: Props_5) => JSX.Element; +export const ProvidingComponentsCard: (props: { + variant?: InfoCardVariants; +}) => JSX.Element; ``` diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx index 787c91f12b..93ab7cc05a 100644 --- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx +++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx @@ -19,7 +19,11 @@ import React from 'react'; import { apiDocsConfigRef } from '../../config'; import { useApi } from '@backstage/core-plugin-api'; -export const ApiTypeTitle = ({ apiEntity }: { apiEntity: ApiEntity }) => { +/** + * @public + */ +export const ApiTypeTitle = (props: { apiEntity: ApiEntity }) => { + const { apiEntity } = props; const config = useApi(apiDocsConfigRef); const definition = config.getApiDefinitionWidget(apiEntity); const type = definition ? definition.title : apiEntity.spec.type; diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx index fde41425c9..588e62ceb7 100644 --- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx @@ -32,11 +32,11 @@ import { WarningPanel, } from '@backstage/core-components'; -type Props = { - variant?: InfoCardVariants; -}; - -export const ConsumedApisCard = ({ variant = 'gridItem' }: Props) => { +/** + * @public + */ +export const ConsumedApisCard = (props: { variant?: InfoCardVariants }) => { + const { variant = 'gridItem' } = props; const { entity } = useEntity(); const { entities, loading, error } = useRelatedEntities(entity, { type: RELATION_CONSUMES_API, diff --git a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx index bb22f82269..b09cafacda 100644 --- a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx @@ -33,10 +33,6 @@ import { WarningPanel, } from '@backstage/core-components'; -type Props = { - variant?: InfoCardVariants; -}; - const columns: TableColumn[] = [ EntityTable.columns.createEntityRefColumn({ defaultKind: 'API' }), EntityTable.columns.createOwnerColumn(), @@ -45,7 +41,11 @@ const columns: TableColumn[] = [ EntityTable.columns.createMetadataDescriptionColumn(), ]; -export const HasApisCard = ({ variant = 'gridItem' }: Props) => { +/** + * @public + */ +export const HasApisCard = (props: { variant?: InfoCardVariants }) => { + const { variant = 'gridItem' } = props; const { entity } = useEntity(); const { entities, loading, error } = useRelatedEntities(entity, { type: RELATION_HAS_PART, diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx index 6ffb6365d2..e9c63d9956 100644 --- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx @@ -32,11 +32,11 @@ import { WarningPanel, } from '@backstage/core-components'; -type Props = { - variant?: InfoCardVariants; -}; - -export const ProvidedApisCard = ({ variant = 'gridItem' }: Props) => { +/** + * @public + */ +export const ProvidedApisCard = (props: { variant?: InfoCardVariants }) => { + const { variant = 'gridItem' } = props; const { entity } = useEntity(); const { entities, loading, error } = useRelatedEntities(entity, { type: RELATION_PROVIDES_API, diff --git a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx index af3dcb7204..aa6afc7822 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx @@ -34,11 +34,13 @@ import { WarningPanel, } from '@backstage/core-components'; -type Props = { +/** + * @public + */ +export const ConsumingComponentsCard = (props: { variant?: InfoCardVariants; -}; - -export const ConsumingComponentsCard = ({ variant = 'gridItem' }: Props) => { +}) => { + const { variant = 'gridItem' } = props; const { entity } = useEntity(); const { entities, loading, error } = useRelatedEntities(entity, { type: RELATION_API_CONSUMED_BY, diff --git a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx index 0be746de6d..939257a2e5 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx @@ -34,11 +34,10 @@ import { WarningPanel, } from '@backstage/core-components'; -type Props = { +export const ProvidingComponentsCard = (props: { variant?: InfoCardVariants; -}; - -export const ProvidingComponentsCard = ({ variant = 'gridItem' }: Props) => { +}) => { + const { variant = 'gridItem' } = props; const { entity } = useEntity(); const { entities, loading, error } = useRelatedEntities(entity, { type: RELATION_API_PROVIDED_BY, diff --git a/plugins/api-docs/src/plugin.ts b/plugins/api-docs/src/plugin.ts index f1928f4443..2a10a3afcd 100644 --- a/plugins/api-docs/src/plugin.ts +++ b/plugins/api-docs/src/plugin.ts @@ -49,6 +49,7 @@ export const apiDocsPlugin = createPlugin({ }, }); +/** @public */ export const ApiExplorerPage = apiDocsPlugin.provide( createRoutableExtension({ name: 'ApiExplorerPage', @@ -58,6 +59,7 @@ export const ApiExplorerPage = apiDocsPlugin.provide( }), ); +/** @public */ export const EntityApiDefinitionCard = apiDocsPlugin.provide( createComponentExtension({ name: 'EntityApiDefinitionCard', @@ -68,6 +70,7 @@ export const EntityApiDefinitionCard = apiDocsPlugin.provide( }), ); +/** @public */ export const EntityConsumedApisCard = apiDocsPlugin.provide( createComponentExtension({ name: 'EntityConsumedApisCard', @@ -78,6 +81,7 @@ export const EntityConsumedApisCard = apiDocsPlugin.provide( }), ); +/** @public */ export const EntityConsumingComponentsCard = apiDocsPlugin.provide( createComponentExtension({ name: 'EntityConsumingComponentsCard', @@ -90,6 +94,7 @@ export const EntityConsumingComponentsCard = apiDocsPlugin.provide( }), ); +/** @public */ export const EntityProvidedApisCard = apiDocsPlugin.provide( createComponentExtension({ name: 'EntityProvidedApisCard', @@ -100,6 +105,7 @@ export const EntityProvidedApisCard = apiDocsPlugin.provide( }), ); +/** @public */ export const EntityProvidingComponentsCard = apiDocsPlugin.provide( createComponentExtension({ name: 'EntityProvidingComponentsCard', @@ -112,6 +118,7 @@ export const EntityProvidingComponentsCard = apiDocsPlugin.provide( }), ); +/** @public */ export const EntityHasApisCard = apiDocsPlugin.provide( createComponentExtension({ name: 'EntityHasApisCard', From 125a2407005343eac6b7e11caba31f7fd294a8bb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 18 Aug 2022 13:37:40 +0200 Subject: [PATCH 094/275] microsite: fix release page Signed-off-by: Patrik Oldsberg --- microsite/sidebars.json | 1 + 1 file changed, 1 insertion(+) diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 27ae9c8295..378d8085a3 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -1,6 +1,7 @@ { "releases": { "Release Notes": [ + "releases/v1.5.0", "releases/v1.4.0", "releases/v1.3.0", "releases/v1.2.0", From aded6572ed94eb8f0f3934f1b6672cfb15a77a57 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 18 Aug 2022 14:00:36 +0200 Subject: [PATCH 095/275] Update SECURITY.md Signed-off-by: Patrik Oldsberg --- SECURITY.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 49e26349b0..5866fff2b4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,9 +2,7 @@ ## Supported Versions -| Version | Supported | -| ------- | ------------------ | -| 0.x | :white_check_mark: | +See our [Release & Versioning Policy](https://backstage.io/docs/overview/versioning-policy#release-versioning-policy). ## Reporting a Vulnerability From 4495cbd121fa090eb33e861bb2856bbc976039e4 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 18 Aug 2022 14:12:27 +0200 Subject: [PATCH 096/275] docs/threat-model: clarify and reword database separation example Signed-off-by: Patrik Oldsberg --- docs/overview/threat-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index 1a93a2ee65..c5af586f9a 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -32,7 +32,7 @@ The integrator is ultimately responsible for auditing usage of internal and exte There are many common facilities that are configured centrally and available to all Backstage backend plugins. For example there is a `DatabaseManager` that provides access to a SQL database, `TaskScheduler` for scheduling long-running tasks, `Logger` as a general logging facility, and `UrlReader` for reading content from external sources. These are all configured either directly in code, or within the `backend` block of the static configuration. The appropriate care needs to be taken to ensure that any secrets remain confidential and no malicious configuration is injected. -In a typical Backstage setup, there is no boundary between plugins that run on the same host. Likewise, there is no boundary between plugins that share the same database. Any plugin that is running on a host that has access to the database of any other plugin should be considered to have full access to that other plugin. For example, if the `catalog` plugin is deployed adjacent to the `auth` plugin and it has access to its database, the `catalog` can be considered to have full access to the `auth` plugin, even if they do not run on the same host. The only way to create a boundary between them is to deploy them in such a way that they do not have access to each others’ database. This applies to the database facility as well as any other shared resources, such as the cache. +In a typical Backstage setup, there is no boundary between plugins that run on the same host. Likewise, there is no boundary between plugins that share the same database access. Any plugin that is running on a host that has access to the logical database of any other plugin should be considered to have full access to that other plugin. For example, if you deploy the `auth` and `catalog` plugins on separate hosts with separate configuration and credentials, the `catalog` plugin is still considered to have full access to the `auth` plugin if the `catalog` plugin has access to the `auth` plugin's logical database. The only way to create a boundary between the two plugins is to deploy them in such a way that they do not have access to each others’ database. This applies to the database facility as well as any other shared resources, such as the cache. The `UrlReader` facility is of particular interest for a secure Backstage configuration. In particular the `backend.reading.allow` configuration lists the hosts that you trust the backend to be able to read content from on behalf of users. It is extremely important that this list does not, for example, allow access to instance metadata endpoints of cloud providers, or other endpoints that your Backstage instance may have access to which contain sensitive information. In general it is recommended to keep the list minimal and only allow reading from required endpoints. The same concerns apply to custom implementations of the `UrlReader` interface, if you need to implement these through code. From 3f739be9d97a65acf87912a6d24d02b948ed14d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 18 Aug 2022 14:11:45 +0200 Subject: [PATCH 097/275] more api cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/eight-spies-protect.md | 25 ++++++++ plugins/azure-devops-backend/api-report.md | 6 -- .../src/api/AzureDevOpsApi.ts | 2 + .../src/service/router.ts | 2 + plugins/azure-devops-common/api-report.md | 46 +------------- plugins/azure-devops-common/src/types.ts | 23 +++++++ plugins/azure-devops/api-report.md | 60 +------------------ .../azure-devops/src/api/AzureDevOpsApi.ts | 2 + .../azure-devops/src/api/AzureDevOpsClient.ts | 4 +- .../AzurePullRequestsIcon.tsx | 4 +- .../EntityPageAzurePipelines.tsx | 8 +-- .../EntityPageAzurePullRequests.tsx | 6 +- .../PullRequestsPage/PullRequestsPage.tsx | 9 +-- .../PullRequestsPage/lib/filters/allFilter.ts | 1 + .../lib/filters/assignedToTeamFilter.ts | 4 +- .../lib/filters/assignedToTeamsFilter.ts | 4 +- .../lib/filters/assignedToUserFilter.ts | 4 +- .../lib/filters/createdByTeamFilter.ts | 4 +- .../lib/filters/createdByTeamsFilter.ts | 4 +- .../lib/filters/createdByUserFilter.ts | 4 +- .../PullRequestsPage/lib/filters/types.ts | 5 ++ .../components/PullRequestsPage/lib/types.ts | 6 +- plugins/azure-devops/src/plugin.ts | 7 +++ plugins/cloudbuild/api-report.md | 43 +++---------- plugins/cloudbuild/src/api/CloudbuildApi.ts | 18 ++---- .../cloudbuild/src/api/CloudbuildClient.ts | 37 +++++------- plugins/explore/api-report.md | 12 +--- .../DomainExplorerContent.tsx | 14 ++--- .../GroupsExplorerContent.tsx | 11 +--- .../ToolExplorerContent.tsx | 10 +--- plugins/fossa/api-report.md | 14 +---- .../src/components/FossaCard/FossaCard.tsx | 4 +- .../src/components/FossaPage/FossaPage.tsx | 6 +- plugins/fossa/src/extensions.tsx | 2 + plugins/fossa/src/plugin.ts | 1 + plugins/git-release-manager/api-report.md | 37 +++--------- .../src/components/InfoCardPlus.tsx | 6 +- .../src/helpers/getBumpedTag.ts | 13 ++-- .../src/helpers/tagParts/getTagParts.ts | 16 ++--- .../src/helpers/tagParts/validateTagName.ts | 9 ++- plugins/github-actions/api-report.md | 36 ++++------- .../src/components/Cards/Cards.tsx | 32 ++++------ plugins/github-actions/src/plugin.ts | 5 ++ plugins/jenkins/api-report.md | 25 ++------ .../jenkins/src/components/Cards/Cards.tsx | 14 ++--- plugins/jenkins/src/components/Router.tsx | 6 +- plugins/jenkins/src/plugin.ts | 6 ++ plugins/newrelic-dashboard/api-report.md | 12 +--- .../DashboardSnapshot.tsx | 11 ++-- .../DashboardSnapshotList.tsx | 9 +-- .../DashboardSnapshotList/index.ts | 1 + plugins/newrelic-dashboard/src/plugin.ts | 6 ++ plugins/pagerduty/api-report.md | 2 +- plugins/pagerduty/src/api/client.ts | 5 +- plugins/scaffolder/api-report.md | 6 +- plugins/scaffolder/src/types.ts | 4 +- plugins/search-backend-node/api-report.md | 12 ++-- .../search-backend-node/src/IndexBuilder.ts | 14 +++-- plugins/search-backend-node/src/Scheduler.ts | 8 ++- .../src/engines/LunrSearchEngine.ts | 6 +- plugins/sentry/api-report.md | 26 ++------ plugins/sentry/src/api/production-api.ts | 1 + plugins/sentry/src/api/sentry-api.ts | 2 + plugins/sentry/src/components/Router.tsx | 5 +- .../SentryIssuesWidget/SentryIssuesWidget.tsx | 16 ++--- plugins/sentry/src/plugin.ts | 2 + plugins/sonarqube/api-report.md | 45 +++++--------- plugins/sonarqube/src/api/SonarQubeApi.ts | 5 +- .../SonarQubeCard/SonarQubeCard.tsx | 15 ++--- .../src/components/SonarQubeCard/Value.tsx | 5 +- .../src/components/SonarQubeCard/index.ts | 1 + .../sonarqube/src/components/useProjectKey.ts | 1 + plugins/sonarqube/src/plugin.ts | 2 + plugins/tech-insights-node/api-report.md | 6 +- plugins/tech-insights-node/src/persistence.ts | 6 +- plugins/tech-insights/api-report.md | 12 +--- .../ScorecardsCard/ScorecardsCard.tsx | 7 +-- .../ScorecardsContent/ScorecardContent.tsx | 7 +-- .../ScorecardsInfo/ScorecardInfo.tsx | 17 +++--- .../api-report.md | 4 +- .../src/ReportIssue/types.ts | 4 +- plugins/techdocs/api-report.md | 6 +- plugins/techdocs/src/types.ts | 6 +- plugins/user-settings/api-report.md | 17 ++---- .../src/components/SettingsPage.tsx | 10 ++-- plugins/vault-backend/api-report.md | 2 +- plugins/vault-backend/src/service/vaultApi.ts | 4 +- scripts/api-extractor.ts | 5 -- 88 files changed, 358 insertions(+), 594 deletions(-) create mode 100644 .changeset/eight-spies-protect.md diff --git a/.changeset/eight-spies-protect.md b/.changeset/eight-spies-protect.md new file mode 100644 index 0000000000..0011dece72 --- /dev/null +++ b/.changeset/eight-spies-protect.md @@ -0,0 +1,25 @@ +--- +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-azure-devops-common': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-newrelic-dashboard': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-search-backend-node': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-insights-node': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-vault-backend': patch +--- + +Minor API signatures cleanup diff --git a/plugins/azure-devops-backend/api-report.md b/plugins/azure-devops-backend/api-report.md index eaebea4d7b..712a433920 100644 --- a/plugins/azure-devops-backend/api-report.md +++ b/plugins/azure-devops-backend/api-report.md @@ -20,8 +20,6 @@ import { Team } from '@backstage/plugin-azure-devops-common'; import { TeamMember } from '@backstage/plugin-azure-devops-common'; import { WebApi } from 'azure-devops-node-api'; -// Warning: (ae-missing-release-tag) "AzureDevOpsApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class AzureDevOpsApi { constructor(logger: Logger, webApi: WebApi); @@ -88,13 +86,9 @@ export class AzureDevOpsApi { }): Promise; } -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index 240ba0b189..13edd7419d 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -53,6 +53,7 @@ import { WebApiTeam, } from 'azure-devops-node-api/interfaces/CoreInterfaces'; +/** @public */ export class AzureDevOpsApi { public constructor( private readonly logger: Logger, @@ -73,6 +74,7 @@ export class AzureDevOpsApi { a.name && b.name ? a.name.localeCompare(b.name) : 0, ); } + public async getGitRepository( projectName: string, repoName: string, diff --git a/plugins/azure-devops-backend/src/service/router.ts b/plugins/azure-devops-backend/src/service/router.ts index a4a76b4a14..0cb504537c 100644 --- a/plugins/azure-devops-backend/src/service/router.ts +++ b/plugins/azure-devops-backend/src/service/router.ts @@ -31,12 +31,14 @@ import express from 'express'; const DEFAULT_TOP = 10; +/** @public */ export interface RouterOptions { azureDevOpsApi?: AzureDevOpsApi; logger: Logger; config: Config; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/plugins/azure-devops-common/api-report.md b/plugins/azure-devops-common/api-report.md index 34d911dac6..ca8206b508 100644 --- a/plugins/azure-devops-common/api-report.md +++ b/plugins/azure-devops-common/api-report.md @@ -3,8 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -// Warning: (ae-missing-release-tag) "BuildResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum BuildResult { Canceled = 32, @@ -14,8 +12,6 @@ export enum BuildResult { Succeeded = 2, } -// Warning: (ae-missing-release-tag) "BuildRun" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BuildRun = { id?: number; @@ -30,15 +26,11 @@ export type BuildRun = { uniqueName?: string; }; -// Warning: (ae-missing-release-tag) "BuildRunOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BuildRunOptions = { top?: number; }; -// Warning: (ae-missing-release-tag) "BuildStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum BuildStatus { All = 47, @@ -50,8 +42,6 @@ export enum BuildStatus { Postponed = 8, } -// Warning: (ae-missing-release-tag) "CreatedBy" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CreatedBy { // (undocumented) @@ -68,8 +58,6 @@ export interface CreatedBy { uniqueName?: string; } -// Warning: (ae-missing-release-tag) "DashboardPullRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface DashboardPullRequest { // (undocumented) @@ -98,8 +86,6 @@ export interface DashboardPullRequest { title?: string; } -// Warning: (ae-missing-release-tag) "GitTag" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GitTag = { objectId?: string; @@ -110,8 +96,6 @@ export type GitTag = { commitLink: string; }; -// Warning: (ae-missing-release-tag) "Policy" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Policy { // (undocumented) @@ -126,9 +110,7 @@ export interface Policy { type: PolicyType; } -// Warning: (ae-missing-release-tag) "PolicyEvaluationStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public +// @public (undocumented) export enum PolicyEvaluationStatus { Approved = 2, Broken = 5, @@ -138,8 +120,6 @@ export enum PolicyEvaluationStatus { Running = 1, } -// Warning: (ae-missing-release-tag) "PolicyType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum PolicyType { // (undocumented) @@ -156,8 +136,6 @@ export enum PolicyType { Status = 'Status', } -// Warning: (ae-missing-release-tag) "PolicyTypeId" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum PolicyTypeId { Build = '0609b952-1397-4640-95ec-e00a01b2c241', @@ -168,8 +146,6 @@ export enum PolicyTypeId { Status = 'cbdc66da-9728-4af8-aada-9a5a32e4a226', } -// Warning: (ae-missing-release-tag) "Project" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Project = { id?: string; @@ -177,8 +153,6 @@ export type Project = { description?: string; }; -// Warning: (ae-missing-release-tag) "PullRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PullRequest = { pullRequestId?: number; @@ -194,16 +168,12 @@ export type PullRequest = { link: string; }; -// Warning: (ae-missing-release-tag) "PullRequestOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PullRequestOptions = { top: number; status: PullRequestStatus; }; -// Warning: (ae-missing-release-tag) "PullRequestStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum PullRequestStatus { Abandoned = 2, @@ -213,8 +183,6 @@ export enum PullRequestStatus { NotSet = 0, } -// Warning: (ae-missing-release-tag) "PullRequestVoteStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum PullRequestVoteStatus { // (undocumented) @@ -229,8 +197,6 @@ export enum PullRequestVoteStatus { WaitingForAuthor = -5, } -// Warning: (ae-missing-release-tag) "RepoBuild" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type RepoBuild = { id?: number; @@ -245,15 +211,11 @@ export type RepoBuild = { uniqueName?: string; }; -// Warning: (ae-missing-release-tag) "RepoBuildOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type RepoBuildOptions = { top?: number; }; -// Warning: (ae-missing-release-tag) "Repository" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Repository { // (undocumented) @@ -264,8 +226,6 @@ export interface Repository { url?: string; } -// Warning: (ae-missing-release-tag) "Reviewer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Reviewer { // (undocumented) @@ -284,8 +244,6 @@ export interface Reviewer { voteStatus: PullRequestVoteStatus; } -// Warning: (ae-missing-release-tag) "Team" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Team { // (undocumented) @@ -300,8 +258,6 @@ export interface Team { projectName?: string; } -// Warning: (ae-missing-release-tag) "TeamMember" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface TeamMember { // (undocumented) diff --git a/plugins/azure-devops-common/src/types.ts b/plugins/azure-devops-common/src/types.ts index db2813dec1..d763d151ca 100644 --- a/plugins/azure-devops-common/src/types.ts +++ b/plugins/azure-devops-common/src/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export enum BuildResult { /** * No result @@ -37,6 +38,7 @@ export enum BuildResult { Canceled = 32, } +/** @public */ export enum BuildStatus { /** * No status. @@ -68,6 +70,7 @@ export enum BuildStatus { All = 47, } +/** @public */ export type RepoBuild = { id?: number; title: string; @@ -81,10 +84,12 @@ export type RepoBuild = { uniqueName?: string; }; +/** @public */ export type RepoBuildOptions = { top?: number; }; +/** @public */ export enum PullRequestStatus { /** * Status not set. Default state. @@ -108,6 +113,7 @@ export enum PullRequestStatus { All = 4, } +/** @public */ export type GitTag = { objectId?: string; peeledObjectId?: string; @@ -117,6 +123,7 @@ export type GitTag = { commitLink: string; }; +/** @public */ export type PullRequest = { pullRequestId?: number; repoName?: string; @@ -131,11 +138,13 @@ export type PullRequest = { link: string; }; +/** @public */ export type PullRequestOptions = { top: number; status: PullRequestStatus; }; +/** @public */ export interface DashboardPullRequest { pullRequestId?: number; title?: string; @@ -151,6 +160,7 @@ export interface DashboardPullRequest { link?: string; } +/** @public */ export interface Reviewer { id?: string; displayName?: string; @@ -161,6 +171,7 @@ export interface Reviewer { voteStatus: PullRequestVoteStatus; } +/** @public */ export interface Policy { id?: number; type: PolicyType; @@ -169,6 +180,7 @@ export interface Policy { link?: string; } +/** @public */ export interface CreatedBy { id?: string; displayName?: string; @@ -178,12 +190,14 @@ export interface CreatedBy { teamNames?: string[]; } +/** @public */ export interface Repository { id?: string; name?: string; url?: string; } +/** @public */ export interface Team { id?: string; name?: string; @@ -192,6 +206,7 @@ export interface Team { members?: string[]; } +/** @public */ export interface TeamMember { id?: string; displayName?: string; @@ -202,6 +217,7 @@ export interface TeamMember { /** * Status of a policy which is running against a specific pull request. */ +/** @public */ export enum PolicyEvaluationStatus { /** * The policy is either queued to run, or is waiting for some event before progressing. @@ -229,6 +245,7 @@ export enum PolicyEvaluationStatus { Broken = 5, } +/** @public */ export enum PolicyType { Build = 'Build', Status = 'Status', @@ -238,6 +255,7 @@ export enum PolicyType { MergeStrategy = 'MergeStrategy', } +/** @public */ export enum PolicyTypeId { /** * This policy will require a successful build has been performed before updating protected refs. @@ -265,6 +283,7 @@ export enum PolicyTypeId { MergeStrategy = 'fa4e907d-c16b-4a4c-9dfa-4916e5d171ab', } +/** @public */ export enum PullRequestVoteStatus { Approved = 10, ApprovedWithSuggestions = 5, @@ -272,6 +291,8 @@ export enum PullRequestVoteStatus { WaitingForAuthor = -5, Rejected = -10, } + +/** @public */ export type BuildRun = { id?: number; title: string; @@ -285,10 +306,12 @@ export type BuildRun = { uniqueName?: string; }; +/** @public */ export type BuildRunOptions = { top?: number; }; +/** @public */ export type Project = { id?: string; name?: string; diff --git a/plugins/azure-devops/api-report.md b/plugins/azure-devops/api-report.md index 0fe600f15d..3c01936390 100644 --- a/plugins/azure-devops/api-report.md +++ b/plugins/azure-devops/api-report.md @@ -21,23 +21,17 @@ import { RepoBuildOptions } from '@backstage/plugin-azure-devops-common'; import { SvgIconProps } from '@material-ui/core'; import { Team } from '@backstage/plugin-azure-devops-common'; -// Warning: (ae-missing-release-tag) "AllFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AllFilter = BaseFilter & { type: FilterType.All; }; -// Warning: (ae-missing-release-tag) "AssignedToTeamFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AssignedToTeamFilter = BaseFilter & { type: FilterType.AssignedToTeam; teamId: string; }; -// Warning: (ae-missing-release-tag) "AssignedToTeamsFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AssignedToTeamsFilter = BaseFilter & ( @@ -51,8 +45,6 @@ export type AssignedToTeamsFilter = BaseFilter & } ); -// Warning: (ae-missing-release-tag) "AssignedToUserFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AssignedToUserFilter = BaseFilter & ( @@ -66,8 +58,6 @@ export type AssignedToUserFilter = BaseFilter & } ); -// Warning: (ae-missing-release-tag) "AzureDevOpsApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AzureDevOpsApi { // (undocumented) @@ -112,13 +102,9 @@ export interface AzureDevOpsApi { getUserTeamIds(userId: string): Promise; } -// Warning: (ae-missing-release-tag) "azureDevOpsApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const azureDevOpsApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "AzureDevOpsClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class AzureDevOpsClient implements AzureDevOpsApi { constructor(options: { @@ -167,38 +153,24 @@ export class AzureDevOpsClient implements AzureDevOpsApi { getUserTeamIds(userId: string): Promise; } -// Warning: (ae-missing-release-tag) "azureDevOpsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const azureDevOpsPlugin: BackstagePlugin<{}, {}, {}>; -// Warning: (ae-missing-release-tag) "AzurePullRequestsIcon" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const AzurePullRequestsIcon: (props: SvgIconProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "AzurePullRequestsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const AzurePullRequestsPage: ({ - projectName, - pollingInterval, - defaultColumnConfigs, -}: { +export const AzurePullRequestsPage: (props: { projectName?: string | undefined; pollingInterval?: number | undefined; defaultColumnConfigs?: PullRequestColumnConfig[] | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "BaseFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BaseFilter = { type: FilterType; }; -// Warning: (ae-missing-release-tag) "CreatedByTeamFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CreatedByTeamFilter = BaseFilter & ({ @@ -212,8 +184,6 @@ export type CreatedByTeamFilter = BaseFilter & } )); -// Warning: (ae-missing-release-tag) "CreatedByTeamsFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CreatedByTeamsFilter = BaseFilter & ( @@ -233,8 +203,6 @@ export type CreatedByTeamsFilter = BaseFilter & } ); -// Warning: (ae-missing-release-tag) "CreatedByUserFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CreatedByUserFilter = BaseFilter & ( @@ -248,31 +216,19 @@ export type CreatedByUserFilter = BaseFilter & } ); -// Warning: (ae-missing-release-tag) "EntityAzureGitTagsContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityAzureGitTagsContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityAzurePipelinesContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityAzurePipelinesContent: ({ - defaultLimit, -}: { +export const EntityAzurePipelinesContent: (props: { defaultLimit?: number | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityAzurePullRequestsContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityAzurePullRequestsContent: ({ - defaultLimit, -}: { +export const EntityAzurePullRequestsContent: (props: { defaultLimit?: number | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "Filter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Filter = | AssignedToUserFilter @@ -283,8 +239,6 @@ export type Filter = | CreatedByTeamsFilter | AllFilter; -// Warning: (ae-missing-release-tag) "FilterType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum FilterType { // (undocumented) @@ -311,18 +265,12 @@ export enum FilterType { CreatedByUser = 'CreatedByUser', } -// Warning: (ae-missing-release-tag) "isAzureDevOpsAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const isAzureDevOpsAvailable: (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "isAzurePipelinesAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const isAzurePipelinesAvailable: (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "PullRequestColumnConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface PullRequestColumnConfig { // (undocumented) @@ -333,8 +281,6 @@ export interface PullRequestColumnConfig { title: string; } -// Warning: (ae-missing-release-tag) "PullRequestFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PullRequestFilter = (pullRequest: DashboardPullRequest) => boolean; diff --git a/plugins/azure-devops/src/api/AzureDevOpsApi.ts b/plugins/azure-devops/src/api/AzureDevOpsApi.ts index ccedc401f1..d90fd71b30 100644 --- a/plugins/azure-devops/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops/src/api/AzureDevOpsApi.ts @@ -28,10 +28,12 @@ import { import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const azureDevOpsApiRef = createApiRef({ id: 'plugin.azure-devops.service', }); +/** @public */ export interface AzureDevOpsApi { getRepoBuilds( projectName: string, diff --git a/plugins/azure-devops/src/api/AzureDevOpsClient.ts b/plugins/azure-devops/src/api/AzureDevOpsClient.ts index 61c8479d71..41d7126f40 100644 --- a/plugins/azure-devops/src/api/AzureDevOpsClient.ts +++ b/plugins/azure-devops/src/api/AzureDevOpsClient.ts @@ -26,10 +26,10 @@ import { Team, } from '@backstage/plugin-azure-devops-common'; import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; - -import { AzureDevOpsApi } from './AzureDevOpsApi'; import { ResponseError } from '@backstage/errors'; +import { AzureDevOpsApi } from './AzureDevOpsApi'; +/** @public */ export class AzureDevOpsClient implements AzureDevOpsApi { private readonly discoveryApi: DiscoveryApi; private readonly identityApi: IdentityApi; diff --git a/plugins/azure-devops/src/components/AzurePullRequestsIcon/AzurePullRequestsIcon.tsx b/plugins/azure-devops/src/components/AzurePullRequestsIcon/AzurePullRequestsIcon.tsx index bb4cb8c081..99e3f74e90 100644 --- a/plugins/azure-devops/src/components/AzurePullRequestsIcon/AzurePullRequestsIcon.tsx +++ b/plugins/azure-devops/src/components/AzurePullRequestsIcon/AzurePullRequestsIcon.tsx @@ -14,10 +14,10 @@ * limitations under the License. */ +import React from 'react'; import { SvgIcon, SvgIconProps } from '@material-ui/core'; -import React from 'react'; - +/** @public */ export const AzurePullRequestsIcon = (props: SvgIconProps) => ( { +export const EntityPageAzurePipelines = (props: { defaultLimit?: number }) => { const { entity } = useEntity(); const { project, repo, definition } = getAnnotationFromEntity(entity); const { items, loading, error } = useBuildRuns( project, - defaultLimit, + props.defaultLimit, repo, definition, ); diff --git a/plugins/azure-devops/src/components/EntityPageAzurePullRequests/EntityPageAzurePullRequests.tsx b/plugins/azure-devops/src/components/EntityPageAzurePullRequests/EntityPageAzurePullRequests.tsx index 3d1a3ef77a..b5a21ff750 100644 --- a/plugins/azure-devops/src/components/EntityPageAzurePullRequests/EntityPageAzurePullRequests.tsx +++ b/plugins/azure-devops/src/components/EntityPageAzurePullRequests/EntityPageAzurePullRequests.tsx @@ -17,10 +17,8 @@ import { PullRequestTable } from '../PullRequestTable/PullRequestTable'; import React from 'react'; -export const EntityPageAzurePullRequests = ({ - defaultLimit, -}: { +export const EntityPageAzurePullRequests = (props: { defaultLimit?: number; }) => { - return ; + return ; }; diff --git a/plugins/azure-devops/src/components/PullRequestsPage/PullRequestsPage.tsx b/plugins/azure-devops/src/components/PullRequestsPage/PullRequestsPage.tsx index 158c4bca5b..c5da207bd6 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/PullRequestsPage.tsx +++ b/plugins/azure-devops/src/components/PullRequestsPage/PullRequestsPage.tsx @@ -24,7 +24,6 @@ import { import { PullRequestColumnConfig, PullRequestGroup } from './lib/types'; import React, { useState } from 'react'; import { getPullRequestGroupConfigs, getPullRequestGroups } from './lib/utils'; - import { FilterType } from './lib/filters'; import { PullRequestGrid } from './lib/PullRequestGrid'; import { useDashboardPullRequests } from '../../hooks'; @@ -71,11 +70,9 @@ type PullRequestsPageProps = { defaultColumnConfigs?: PullRequestColumnConfig[]; }; -export const PullRequestsPage = ({ - projectName, - pollingInterval, - defaultColumnConfigs, -}: PullRequestsPageProps) => { +export const PullRequestsPage = (props: PullRequestsPageProps) => { + const { projectName, pollingInterval, defaultColumnConfigs } = props; + const { pullRequests, loading, error } = useDashboardPullRequests( projectName, pollingInterval, diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/allFilter.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/allFilter.ts index 90ec822ef6..952f7ddc57 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/allFilter.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/allFilter.ts @@ -18,6 +18,7 @@ import { BaseFilter, FilterType, PullRequestFilter } from './types'; import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +/** @public */ export type AllFilter = BaseFilter & { type: FilterType.All; }; diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamFilter.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamFilter.ts index 8e816db2c3..fa6b3de00a 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamFilter.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamFilter.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { BaseFilter, FilterType, PullRequestFilter } from './types'; - import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +import { BaseFilter, FilterType, PullRequestFilter } from './types'; import { stringArrayHas } from '../../../../utils'; +/** @public */ export type AssignedToTeamFilter = BaseFilter & { type: FilterType.AssignedToTeam; teamId: string; diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamsFilter.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamsFilter.ts index ce5e5bcc11..df93e38f81 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamsFilter.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToTeamsFilter.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { BaseFilter, FilterType, PullRequestFilter } from './types'; - import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +import { BaseFilter, FilterType, PullRequestFilter } from './types'; import { createAssignedToTeamFilter } from './assignedToTeamFilter'; +/** @public */ export type AssignedToTeamsFilter = BaseFilter & ( | { diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToUserFilter.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToUserFilter.ts index 95ee3d5a59..3f554de62b 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToUserFilter.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/assignedToUserFilter.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { BaseFilter, FilterType, PullRequestFilter } from './types'; - import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +import { BaseFilter, FilterType, PullRequestFilter } from './types'; import { stringArrayHas } from '../../../../utils'; +/** @public */ export type AssignedToUserFilter = BaseFilter & ( | { diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamFilter.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamFilter.ts index 70a388b540..e4d28d28b1 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamFilter.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamFilter.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { BaseFilter, FilterType, PullRequestFilter } from './types'; - import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +import { BaseFilter, FilterType, PullRequestFilter } from './types'; import { stringArrayHas } from '../../../../utils'; +/** @public */ export type CreatedByTeamFilter = BaseFilter & ({ type: FilterType.CreatedByTeam; diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamsFilter.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamsFilter.ts index 34ed81db5d..44e02136ec 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamsFilter.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByTeamsFilter.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { BaseFilter, FilterType, PullRequestFilter } from './types'; - import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +import { BaseFilter, FilterType, PullRequestFilter } from './types'; import { createCreatedByTeamFilter } from './createdByTeamFilter'; +/** @public */ export type CreatedByTeamsFilter = BaseFilter & ( | ({ diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByUserFilter.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByUserFilter.ts index 69d4f23db5..24c14311eb 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByUserFilter.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/createdByUserFilter.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { BaseFilter, FilterType, PullRequestFilter } from './types'; - import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +import { BaseFilter, FilterType, PullRequestFilter } from './types'; import { equalsIgnoreCase } from '../../../../utils'; +/** @public */ export type CreatedByUserFilter = BaseFilter & ( | { diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/types.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/types.ts index bc4643d51b..6b0d95eb78 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/types.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/filters/types.ts @@ -23,6 +23,7 @@ import { CreatedByTeamsFilter } from './createdByTeamsFilter'; import { CreatedByUserFilter } from './createdByUserFilter'; import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; +/** @public */ export enum FilterType { All = 'All', @@ -41,6 +42,7 @@ export enum FilterType { CreatedByCurrentUsersTeams = 'CreatedByCurrentUsersTeams', } +/** @public */ export const FilterTypes = [ FilterType.All, @@ -57,10 +59,12 @@ export const FilterTypes = [ FilterType.CreatedByCurrentUsersTeams, ] as const; +/** @public */ export type BaseFilter = { type: FilterType; }; +/** @public */ export type Filter = | AssignedToUserFilter | CreatedByUserFilter @@ -80,4 +84,5 @@ export type { AllFilter, }; +/** @public */ export type PullRequestFilter = (pullRequest: DashboardPullRequest) => boolean; diff --git a/plugins/azure-devops/src/components/PullRequestsPage/lib/types.ts b/plugins/azure-devops/src/components/PullRequestsPage/lib/types.ts index 74c8ebe605..5f5f0119d8 100644 --- a/plugins/azure-devops/src/components/PullRequestsPage/lib/types.ts +++ b/plugins/azure-devops/src/components/PullRequestsPage/lib/types.ts @@ -14,22 +14,24 @@ * limitations under the License. */ +import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; import { Filter, PullRequestFilter } from './filters'; -import { DashboardPullRequest } from '@backstage/plugin-azure-devops-common'; - +/** @public */ export interface PullRequestColumnConfig { title: string; filters: Filter[]; simplified?: boolean; } +/** @public */ export interface PullRequestGroupConfig { title: string; filter: PullRequestFilter; simplified?: boolean; } +/** @public */ export interface PullRequestGroup { title: string; pullRequests: DashboardPullRequest[]; diff --git a/plugins/azure-devops/src/plugin.ts b/plugins/azure-devops/src/plugin.ts index ccd183eee9..a9753a26c1 100644 --- a/plugins/azure-devops/src/plugin.ts +++ b/plugins/azure-devops/src/plugin.ts @@ -37,9 +37,11 @@ import { AzureDevOpsClient } from './api/AzureDevOpsClient'; import { Entity } from '@backstage/catalog-model'; import { azureDevOpsApiRef } from './api/AzureDevOpsApi'; +/** @public */ export const isAzureDevOpsAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[AZURE_DEVOPS_REPO_ANNOTATION]); +/** @public */ export const isAzurePipelinesAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[AZURE_DEVOPS_REPO_ANNOTATION]) || (Boolean(entity.metadata.annotations?.[AZURE_DEVOPS_PROJECT_ANNOTATION]) && @@ -47,6 +49,7 @@ export const isAzurePipelinesAvailable = (entity: Entity) => entity.metadata.annotations?.[AZURE_DEVOPS_BUILD_DEFINITION_ANNOTATION], )); +/** @public */ export const azureDevOpsPlugin = createPlugin({ id: 'azureDevOps', apis: [ @@ -59,6 +62,7 @@ export const azureDevOpsPlugin = createPlugin({ ], }); +/** @public */ export const AzurePullRequestsPage = azureDevOpsPlugin.provide( createRoutableExtension({ name: 'AzurePullRequestsPage', @@ -68,6 +72,7 @@ export const AzurePullRequestsPage = azureDevOpsPlugin.provide( }), ); +/** @public */ export const EntityAzurePipelinesContent = azureDevOpsPlugin.provide( createRoutableExtension({ name: 'EntityAzurePipelinesContent', @@ -79,6 +84,7 @@ export const EntityAzurePipelinesContent = azureDevOpsPlugin.provide( }), ); +/** @public */ export const EntityAzureGitTagsContent = azureDevOpsPlugin.provide( createRoutableExtension({ name: 'EntityAzureGitTagsContent', @@ -90,6 +96,7 @@ export const EntityAzureGitTagsContent = azureDevOpsPlugin.provide( }), ); +/** @public */ export const EntityAzurePullRequestsContent = azureDevOpsPlugin.provide( createRoutableExtension({ name: 'EntityAzurePullRequestsContent', diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index ecc6d7b460..5d2dc325e4 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -60,31 +60,20 @@ export interface BUILD { // @public (undocumented) export const CLOUDBUILD_ANNOTATION = 'google.com/cloudbuild-project-slug'; -// Warning: (ae-missing-release-tag) "CloudbuildApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CloudbuildApi = { - listWorkflowRuns: (request: { + listWorkflowRuns: (options: { projectId: string; }) => Promise; - getWorkflow: ({ - projectId, - id, - }: { + getWorkflow: (options: { projectId: string; id: string; }) => Promise; - getWorkflowRun: ({ - projectId, - id, - }: { + getWorkflowRun: (options: { projectId: string; id: string; }) => Promise; - reRunWorkflow: ({ - projectId, - runId, - }: { + reRunWorkflow: (options: { projectId: string; runId: string; }) => Promise; @@ -95,43 +84,27 @@ export type CloudbuildApi = { // @public (undocumented) export const cloudbuildApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "CloudbuildClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class CloudbuildClient implements CloudbuildApi { constructor(googleAuthApi: OAuthApi); // (undocumented) getToken(): Promise; // (undocumented) - getWorkflow({ - projectId, - id, - }: { + getWorkflow(options: { projectId: string; id: string; }): Promise; // (undocumented) - getWorkflowRun({ - projectId, - id, - }: { + getWorkflowRun(options: { projectId: string; id: string; }): Promise; // (undocumented) - listWorkflowRuns({ - projectId, - }: { + listWorkflowRuns(options: { projectId: string; }): Promise; // (undocumented) - reRunWorkflow({ - projectId, - runId, - }: { - projectId: string; - runId: string; - }): Promise; + reRunWorkflow(options: { projectId: string; runId: string }): Promise; } // Warning: (ae-missing-release-tag) "cloudbuildPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/plugins/cloudbuild/src/api/CloudbuildApi.ts b/plugins/cloudbuild/src/api/CloudbuildApi.ts index 92ea8511fe..eeaf269cde 100644 --- a/plugins/cloudbuild/src/api/CloudbuildApi.ts +++ b/plugins/cloudbuild/src/api/CloudbuildApi.ts @@ -24,28 +24,20 @@ export const cloudbuildApiRef = createApiRef({ id: 'plugin.cloudbuild.service', }); +/** @public */ export type CloudbuildApi = { - listWorkflowRuns: (request: { + listWorkflowRuns: (options: { projectId: string; }) => Promise; - getWorkflow: ({ - projectId, - id, - }: { + getWorkflow: (options: { projectId: string; id: string; }) => Promise; - getWorkflowRun: ({ - projectId, - id, - }: { + getWorkflowRun: (options: { projectId: string; id: string; }) => Promise; - reRunWorkflow: ({ - projectId, - runId, - }: { + reRunWorkflow: (options: { projectId: string; runId: string; }) => Promise; diff --git a/plugins/cloudbuild/src/api/CloudbuildClient.ts b/plugins/cloudbuild/src/api/CloudbuildClient.ts index cbd47e84e9..035b20f63d 100644 --- a/plugins/cloudbuild/src/api/CloudbuildClient.ts +++ b/plugins/cloudbuild/src/api/CloudbuildClient.ts @@ -21,20 +21,18 @@ import { } from '../api/types'; import { OAuthApi } from '@backstage/core-plugin-api'; +/** @public */ export class CloudbuildClient implements CloudbuildApi { constructor(private readonly googleAuthApi: OAuthApi) {} - async reRunWorkflow({ - projectId, - runId, - }: { + async reRunWorkflow(options: { projectId: string; runId: string; }): Promise { await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( - projectId, - )}/builds/${encodeURIComponent(runId)}:retry`, + options.projectId, + )}/builds/${encodeURIComponent(options.runId)}:retry`, { headers: new Headers({ Accept: '*/*', @@ -43,14 +41,13 @@ export class CloudbuildClient implements CloudbuildApi { }, ); } - async listWorkflowRuns({ - projectId, - }: { + + async listWorkflowRuns(options: { projectId: string; }): Promise { const workflowRuns = await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( - projectId, + options.projectId, )}/builds`, { headers: new Headers({ @@ -65,17 +62,15 @@ export class CloudbuildClient implements CloudbuildApi { return builds; } - async getWorkflow({ - projectId, - id, - }: { + + async getWorkflow(options: { projectId: string; id: string; }): Promise { const workflow = await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( - projectId, - )}/builds/${encodeURIComponent(id)}`, + options.projectId, + )}/builds/${encodeURIComponent(options.id)}`, { headers: new Headers({ Accept: '*/*', @@ -88,17 +83,15 @@ export class CloudbuildClient implements CloudbuildApi { return build; } - async getWorkflowRun({ - projectId, - id, - }: { + + async getWorkflowRun(options: { projectId: string; id: string; }): Promise { const workflow = await fetch( `https://cloudbuild.googleapis.com/v1/projects/${encodeURIComponent( - projectId, - )}/builds/${encodeURIComponent(id)}`, + options.projectId, + )}/builds/${encodeURIComponent(options.id)}`, { headers: new Headers({ Accept: '*/*', diff --git a/plugins/explore/api-report.md b/plugins/explore/api-report.md index c7181af19d..f4c7345b6c 100644 --- a/plugins/explore/api-report.md +++ b/plugins/explore/api-report.md @@ -33,9 +33,7 @@ export const DomainCard: ({ entity }: DomainCardProps) => JSX.Element; // Warning: (ae-missing-release-tag) "DomainExplorerContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const DomainExplorerContent: ({ - title, -}: { +export const DomainExplorerContent: (props: { title?: string | undefined; }) => JSX.Element; @@ -82,18 +80,14 @@ export const exploreRouteRef: RouteRef; // Warning: (ae-missing-release-tag) "GroupsExplorerContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const GroupsExplorerContent: ({ - title, -}: { +export const GroupsExplorerContent: (props: { title?: string | undefined; }) => JSX.Element; // Warning: (ae-missing-release-tag) "ToolExplorerContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const ToolExplorerContent: ({ - title, -}: { +export const ToolExplorerContent: (props: { title?: string | undefined; }) => JSX.Element; diff --git a/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.tsx b/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.tsx index ba495f6492..3cfed5b12b 100644 --- a/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.tsx +++ b/plugins/explore/src/components/DomainExplorerContent/DomainExplorerContent.tsx @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { DomainEntity } from '@backstage/catalog-model'; import { catalogApiRef } from '@backstage/plugin-catalog-react'; import { Button } from '@material-ui/core'; import React from 'react'; import useAsync from 'react-use/lib/useAsync'; import { DomainCard } from '../DomainCard'; - import { Content, ContentHeader, @@ -29,7 +29,6 @@ import { SupportButton, WarningPanel, } from '@backstage/core-components'; - import { useApi } from '@backstage/core-plugin-api'; const Body = () => { @@ -85,16 +84,11 @@ const Body = () => { ); }; -type DomainExplorerContentProps = { - title?: string; -}; - -export const DomainExplorerContent = ({ - title, -}: DomainExplorerContentProps) => { +/** @public */ +export const DomainExplorerContent = (props: { title?: string }) => { return ( - + Discover the domains in your ecosystem. diff --git a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.tsx index ae711b85d9..62c4b093c0 100644 --- a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.tsx +++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.tsx @@ -31,21 +31,14 @@ const useStyles = makeStyles({ }, }); -type GroupsExplorerContentProps = { - title?: string; -}; - -export const GroupsExplorerContent = ({ - title, -}: GroupsExplorerContentProps) => { +export const GroupsExplorerContent = (props: { title?: string }) => { const classes = useStyles(); return ( - + Explore your groups. - ); diff --git a/plugins/explore/src/components/ToolExplorerContent/ToolExplorerContent.tsx b/plugins/explore/src/components/ToolExplorerContent/ToolExplorerContent.tsx index db07bd0665..5404c67393 100644 --- a/plugins/explore/src/components/ToolExplorerContent/ToolExplorerContent.tsx +++ b/plugins/explore/src/components/ToolExplorerContent/ToolExplorerContent.tsx @@ -18,7 +18,6 @@ import { exploreToolsConfigRef } from '@backstage/plugin-explore-react'; import React from 'react'; import useAsync from 'react-use/lib/useAsync'; import { ToolCard } from '../ToolCard'; - import { Content, ContentHeader, @@ -28,7 +27,6 @@ import { SupportButton, WarningPanel, } from '@backstage/core-components'; - import { useApi } from '@backstage/core-plugin-api'; const Body = () => { @@ -68,13 +66,9 @@ const Body = () => { ); }; -type ToolExplorerContentProps = { - title?: string; -}; - -export const ToolExplorerContent = ({ title }: ToolExplorerContentProps) => ( +export const ToolExplorerContent = (props: { title?: string }) => ( - + Discover the tools in your ecosystem. diff --git a/plugins/fossa/api-report.md b/plugins/fossa/api-report.md index ca9610b992..45f0746ac3 100644 --- a/plugins/fossa/api-report.md +++ b/plugins/fossa/api-report.md @@ -9,22 +9,14 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { InfoCardVariants } from '@backstage/core-components'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "EntityFossaCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityFossaCard: ({ - variant, -}: { +export const EntityFossaCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "FossaPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const FossaPage: ({ entitiesFilter }: FossaPageProps) => JSX.Element; +export const FossaPage: (props: FossaPageProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "FossaPageProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type FossaPageProps = { entitiesFilter?: @@ -33,8 +25,6 @@ export type FossaPageProps = { | undefined; }; -// Warning: (ae-missing-release-tag) "fossaPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const fossaPlugin: BackstagePlugin< { diff --git a/plugins/fossa/src/components/FossaCard/FossaCard.tsx b/plugins/fossa/src/components/FossaCard/FossaCard.tsx index bbd5594fbc..31ff84e107 100644 --- a/plugins/fossa/src/components/FossaCard/FossaCard.tsx +++ b/plugins/fossa/src/components/FossaCard/FossaCard.tsx @@ -100,7 +100,9 @@ const Card = ({ ); }; -export const FossaCard = ({ variant }: { variant?: InfoCardVariants }) => { + +export const FossaCard = (props: { variant?: InfoCardVariants }) => { + const { variant } = props; const { entity } = useEntity(); const fossaApi = useApi(fossaApiRef); diff --git a/plugins/fossa/src/components/FossaPage/FossaPage.tsx b/plugins/fossa/src/components/FossaPage/FossaPage.tsx index 731852d4a7..faff862d0f 100644 --- a/plugins/fossa/src/components/FossaPage/FossaPage.tsx +++ b/plugins/fossa/src/components/FossaPage/FossaPage.tsx @@ -167,6 +167,7 @@ const filters: TableFilter[] = [ { column: 'Branch', type: 'select' }, ]; +/** @public */ export type FossaPageProps = { entitiesFilter?: | Record[] @@ -174,9 +175,8 @@ export type FossaPageProps = { | undefined; }; -export const FossaPage = ({ - entitiesFilter = { kind: 'Component' }, -}: FossaPageProps) => { +export const FossaPage = (props: FossaPageProps) => { + const { entitiesFilter = { kind: 'Component' } } = props; const catalogApi = useApi(catalogApiRef); const fossaApi = useApi(fossaApiRef); const [filter, setFilter] = useState(entitiesFilter); diff --git a/plugins/fossa/src/extensions.tsx b/plugins/fossa/src/extensions.tsx index 97bea6a4cf..d26057d9cc 100644 --- a/plugins/fossa/src/extensions.tsx +++ b/plugins/fossa/src/extensions.tsx @@ -21,6 +21,7 @@ import { createRoutableExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const EntityFossaCard = fossaPlugin.provide( createComponentExtension({ name: 'EntityFossaCard', @@ -30,6 +31,7 @@ export const EntityFossaCard = fossaPlugin.provide( }), ); +/** @public */ export const FossaPage = fossaPlugin.provide( createRoutableExtension({ name: 'FossaPage', diff --git a/plugins/fossa/src/plugin.ts b/plugins/fossa/src/plugin.ts index 954ecedc81..bcc8c0f8e6 100644 --- a/plugins/fossa/src/plugin.ts +++ b/plugins/fossa/src/plugin.ts @@ -24,6 +24,7 @@ import { identityApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const fossaPlugin = createPlugin({ id: 'fossa', apis: [ diff --git a/plugins/git-release-manager/api-report.md b/plugins/git-release-manager/api-report.md index 24207de991..d34b6c07fb 100644 --- a/plugins/git-release-manager/api-report.md +++ b/plugins/git-release-manager/api-report.md @@ -90,7 +90,6 @@ const DISABLE_CACHE: { const Divider: () => JSX.Element; // Warning: (ae-forgotten-export) The symbol "SemverTagParts" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getBumpedSemverTagParts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public function getBumpedSemverTagParts( @@ -105,14 +104,8 @@ function getBumpedSemverTagParts( }; }; -// Warning: (ae-missing-release-tag) "getBumpedTag" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public -function getBumpedTag({ - project, - tag, - bumpLevel, -}: { +function getBumpedTag(options: { project: Project; tag: string; bumpLevel: keyof typeof SEMVER_PARTS; @@ -167,10 +160,8 @@ function getSemverTagParts(tag: string): // @public (undocumented) function getShortCommitHash(hash: string): string; -// Warning: (ae-missing-release-tag) "getTagParts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public -function getTagParts({ project, tag }: { project: Project; tag: string }): +function getTagParts(options: { project: Project; tag: string }): | { error: AlertError; tagParts?: undefined; @@ -207,14 +198,8 @@ export const gitReleaseManagerPlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "InfoCardPlus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -const InfoCardPlus: ({ - children, -}: { - children?: React_2.ReactNode; -}) => JSX.Element; +const InfoCardPlus: (props: { children?: React_2.ReactNode }) => JSX.Element; // Warning: (ae-missing-release-tag) "internals" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -625,16 +610,8 @@ declare namespace testIds { export { TEST_IDS }; } -// Warning: (ae-missing-release-tag) "validateTagName" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -const validateTagName: ({ - project, - tagName, -}: { - project: Project; - tagName?: string | undefined; -}) => +const validateTagName: (options: { project: Project; tagName?: string }) => | { tagNameError: null; } @@ -653,9 +630,9 @@ const VERSIONING_STRATEGIES: { // Warnings were encountered during analysis: // // src/components/ResponseStepDialog/LinearProgressWithLabel.d.ts:5:5 - (ae-forgotten-export) The symbol "ResponseStep" needs to be exported by the entry point index.d.ts -// src/helpers/getBumpedTag.d.ts:14:5 - (ae-forgotten-export) The symbol "Project" needs to be exported by the entry point index.d.ts -// src/helpers/getBumpedTag.d.ts:19:5 - (ae-forgotten-export) The symbol "CalverTagParts" needs to be exported by the entry point index.d.ts -// src/helpers/getBumpedTag.d.ts:31:5 - (ae-forgotten-export) The symbol "AlertError" needs to be exported by the entry point index.d.ts +// src/helpers/getBumpedTag.d.ts:16:5 - (ae-forgotten-export) The symbol "Project" needs to be exported by the entry point index.d.ts +// src/helpers/getBumpedTag.d.ts:21:5 - (ae-forgotten-export) The symbol "CalverTagParts" needs to be exported by the entry point index.d.ts +// src/helpers/getBumpedTag.d.ts:33:5 - (ae-forgotten-export) The symbol "AlertError" needs to be exported by the entry point index.d.ts // src/index.d.ts:9:5 - (ae-forgotten-export) The symbol "components" needs to be exported by the entry point index.d.ts // src/index.d.ts:10:5 - (ae-forgotten-export) The symbol "constants" needs to be exported by the entry point index.d.ts // src/index.d.ts:11:5 - (ae-forgotten-export) The symbol "helpers" needs to be exported by the entry point index.d.ts diff --git a/plugins/git-release-manager/src/components/InfoCardPlus.tsx b/plugins/git-release-manager/src/components/InfoCardPlus.tsx index bd0b79ba37..cd682adde1 100644 --- a/plugins/git-release-manager/src/components/InfoCardPlus.tsx +++ b/plugins/git-release-manager/src/components/InfoCardPlus.tsx @@ -17,7 +17,6 @@ import React from 'react'; import { makeStyles } from '@material-ui/core'; import { TEST_IDS } from '../test-helpers/test-ids'; - import { InfoCard } from '@backstage/core-components'; const useStyles = makeStyles(() => ({ @@ -26,7 +25,8 @@ const useStyles = makeStyles(() => ({ }, })); -export const InfoCardPlus = ({ children }: { children?: React.ReactNode }) => { +/** @public */ +export const InfoCardPlus = (props: { children?: React.ReactNode }) => { const classes = useStyles(); return ( @@ -34,7 +34,7 @@ export const InfoCardPlus = ({ children }: { children?: React.ReactNode }) => { style={{ position: 'relative' }} data-testid={TEST_IDS.info.infoFeaturePlus} > - {children} + {props.children} ); }; diff --git a/plugins/git-release-manager/src/helpers/getBumpedTag.ts b/plugins/git-release-manager/src/helpers/getBumpedTag.ts index dbfb00818e..5183947a1c 100644 --- a/plugins/git-release-manager/src/helpers/getBumpedTag.ts +++ b/plugins/git-release-manager/src/helpers/getBumpedTag.ts @@ -28,16 +28,15 @@ import { SemverTagParts } from './tagParts/getSemverTagParts'; * * For semantic versioning this means either a minor or a patch bump * depending on the value of `bumpLevel` + * + * @public */ -export function getBumpedTag({ - project, - tag, - bumpLevel, -}: { +export function getBumpedTag(options: { project: Project; tag: string; bumpLevel: keyof typeof SEMVER_PARTS; }) { + const { project, tag, bumpLevel } = options; const tagParts = getTagParts({ project, tag }); if (tagParts.error !== undefined) { @@ -53,6 +52,7 @@ export function getBumpedTag({ return getBumpedSemverTag(tagParts.tagParts, bumpLevel); } +/** @public */ function getPatchedCalverTag(tagParts: CalverTagParts) { const bumpedTagParts: CalverTagParts = { ...tagParts, @@ -67,6 +67,7 @@ function getPatchedCalverTag(tagParts: CalverTagParts) { }; } +/** @public */ function getBumpedSemverTag( tagParts: SemverTagParts, semverBumpLevel: keyof typeof SEMVER_PARTS, @@ -85,6 +86,8 @@ function getBumpedSemverTag( /** * Calculates the next semantic version, taking into account * whether or not it's a minor or patch + * + * @public */ export function getBumpedSemverTagParts( tagParts: SemverTagParts, diff --git a/plugins/git-release-manager/src/helpers/tagParts/getTagParts.ts b/plugins/git-release-manager/src/helpers/tagParts/getTagParts.ts index 750e4e23c5..ba8412b2b4 100644 --- a/plugins/git-release-manager/src/helpers/tagParts/getTagParts.ts +++ b/plugins/git-release-manager/src/helpers/tagParts/getTagParts.ts @@ -21,17 +21,13 @@ import { Project } from '../../contexts/ProjectContext'; /** * Tag parts are the individual parts of a version, e.g. .. * are the parts of a semantic version + * + * @public */ -export function getTagParts({ - project, - tag, -}: { - project: Project; - tag: string; -}) { - if (project.versioningStrategy === 'calver') { - return getCalverTagParts(tag); +export function getTagParts(options: { project: Project; tag: string }) { + if (options.project.versioningStrategy === 'calver') { + return getCalverTagParts(options.tag); } - return getSemverTagParts(tag); + return getSemverTagParts(options.tag); } diff --git a/plugins/git-release-manager/src/helpers/tagParts/validateTagName.ts b/plugins/git-release-manager/src/helpers/tagParts/validateTagName.ts index b9c0fb74ff..4e35cb0ca4 100644 --- a/plugins/git-release-manager/src/helpers/tagParts/validateTagName.ts +++ b/plugins/git-release-manager/src/helpers/tagParts/validateTagName.ts @@ -18,13 +18,13 @@ import { getCalverTagParts } from './getCalverTagParts'; import { getSemverTagParts } from './getSemverTagParts'; import { Project } from '../../contexts/ProjectContext'; -export const validateTagName = ({ - project, - tagName, -}: { +/** @public */ +export const validateTagName = (options: { project: Project; tagName?: string; }) => { + const { project, tagName } = options; + if (!tagName) { return { tagNameError: null, @@ -33,7 +33,6 @@ export const validateTagName = ({ if (project.versioningStrategy === 'calver') { const { error } = getCalverTagParts(tagName); - return { tagNameError: error, }; diff --git a/plugins/github-actions/api-report.md b/plugins/github-actions/api-report.md index 862d20d608..8cf70eabcc 100644 --- a/plugins/github-actions/api-report.md +++ b/plugins/github-actions/api-report.md @@ -28,35 +28,22 @@ export enum BuildStatus { 'success' = 0, } -// Warning: (ae-missing-release-tag) "EntityGithubActionsContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityGithubActionsContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLatestGithubActionRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityLatestGithubActionRunCard: ({ - branch, - variant, -}: { +export const EntityLatestGithubActionRunCard: (props: { branch: string; variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLatestGithubActionsForBranchCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityLatestGithubActionsForBranchCard: ({ - branch, - variant, -}: { +export const EntityLatestGithubActionsForBranchCard: (props: { branch: string; variant?: InfoCardVariants | undefined; }) => JSX.Element; // Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EntityRecentGithubActionsRunsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export const EntityRecentGithubActionsRunsCard: ({ @@ -191,8 +178,6 @@ export class GithubActionsClient implements GithubActionsApi { }): Promise; } -// Warning: (ae-missing-release-tag) "githubActionsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const githubActionsPlugin: BackstagePlugin< { @@ -233,22 +218,21 @@ export type Jobs = { jobs: Job[]; }; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "LatestWorkflowRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const LatestWorkflowRunCard: ({ - branch, - variant, -}: Props_2) => JSX.Element; +export const LatestWorkflowRunCard: (props: { + branch: string; + variant?: InfoCardVariants; +}) => JSX.Element; // Warning: (ae-missing-release-tag) "LatestWorkflowsForBranchCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const LatestWorkflowsForBranchCard: ({ - branch, - variant, -}: Props_2) => JSX.Element; +export const LatestWorkflowsForBranchCard: (props: { + branch: string; + variant?: InfoCardVariants; +}) => JSX.Element; // Warning: (ae-missing-release-tag) "RecentWorkflowRunsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/github-actions/src/components/Cards/Cards.tsx b/plugins/github-actions/src/components/Cards/Cards.tsx index 61a5146bee..5e53096ba4 100644 --- a/plugins/github-actions/src/components/Cards/Cards.tsx +++ b/plugins/github-actions/src/components/Cards/Cards.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { readGitHubIntegrationConfigs } from '@backstage/integration'; import { useEntity } from '@backstage/plugin-catalog-react'; import { @@ -27,7 +28,6 @@ import { GITHUB_ACTIONS_ANNOTATION } from '../getProjectNameFromEntity'; import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns'; import { WorkflowRunsTable } from '../WorkflowRunsTable'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; - import { configApiRef, errorApiRef, useApi } from '@backstage/core-plugin-api'; import { InfoCard, @@ -43,20 +43,18 @@ const useStyles = makeStyles({ }, }); -const WidgetContent = ({ - error, - loading, - lastRun, - branch, -}: { +const WidgetContent = (props: { error?: Error; loading?: boolean; lastRun: WorkflowRun; branch: string; }) => { + const { error, loading, lastRun, branch } = props; const classes = useStyles(); + if (error) return Couldn't fetch latest {branch} run; if (loading) return ; + return ( { +export const LatestWorkflowRunCard = (props: { + branch: string; + variant?: InfoCardVariants; +}) => { + const { branch = 'master', variant } = props; const { entity } = useEntity(); const config = useApi(configApiRef); const errorApi = useApi(errorApiRef); @@ -120,15 +118,11 @@ export const LatestWorkflowRunCard = ({ ); }; -type Props = { +export const LatestWorkflowsForBranchCard = (props: { branch: string; variant?: InfoCardVariants; -}; - -export const LatestWorkflowsForBranchCard = ({ - branch = 'master', - variant, -}: Props) => { +}) => { + const { branch = 'master', variant } = props; const { entity } = useEntity(); return ( diff --git a/plugins/github-actions/src/plugin.ts b/plugins/github-actions/src/plugin.ts index d8db5e16d0..26cf246fb9 100644 --- a/plugins/github-actions/src/plugin.ts +++ b/plugins/github-actions/src/plugin.ts @@ -25,6 +25,7 @@ import { createComponentExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const githubActionsPlugin = createPlugin({ id: 'github-actions', apis: [ @@ -40,6 +41,7 @@ export const githubActionsPlugin = createPlugin({ }, }); +/** @public */ export const EntityGithubActionsContent = githubActionsPlugin.provide( createRoutableExtension({ name: 'EntityGithubActionsContent', @@ -48,6 +50,7 @@ export const EntityGithubActionsContent = githubActionsPlugin.provide( }), ); +/** @public */ export const EntityLatestGithubActionRunCard = githubActionsPlugin.provide( createComponentExtension({ name: 'EntityLatestGithubActionRunCard', @@ -58,6 +61,7 @@ export const EntityLatestGithubActionRunCard = githubActionsPlugin.provide( }), ); +/** @public */ export const EntityLatestGithubActionsForBranchCard = githubActionsPlugin.provide( createComponentExtension({ @@ -71,6 +75,7 @@ export const EntityLatestGithubActionsForBranchCard = }), ); +/** @public */ export const EntityRecentGithubActionsRunsCard = githubActionsPlugin.provide( createComponentExtension({ name: 'EntityRecentGithubActionsRunsCard', diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index 33072ecf49..59e3dc636e 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -14,24 +14,15 @@ import { IdentityApi } from '@backstage/core-plugin-api'; import { InfoCardVariants } from '@backstage/core-components'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "EntityJenkinsContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityJenkinsContent: (_props: {}) => JSX.Element; +export const EntityJenkinsContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLatestJenkinsRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityLatestJenkinsRunCard: ({ - branch, - variant, -}: { +export const EntityLatestJenkinsRunCard: (props: { branch: string; variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "isJenkinsAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isJenkinsAvailable: (entity: Entity) => boolean; export { isJenkinsAvailable }; @@ -101,8 +92,6 @@ export class JenkinsClient implements JenkinsApi { }): Promise; } -// Warning: (ae-missing-release-tag) "jenkinsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const jenkinsPlugin: BackstagePlugin< { @@ -117,12 +106,9 @@ export { jenkinsPlugin as plugin }; // Warning: (ae-missing-release-tag) "LatestRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const LatestRunCard: ({ - branch, - variant, -}: { +export const LatestRunCard: (props: { branch: string; - variant?: InfoCardVariants | undefined; + variant?: InfoCardVariants; }) => JSX.Element; // Warning: (ae-missing-release-tag) "LEGACY_JENKINS_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -130,9 +116,8 @@ export const LatestRunCard: ({ // @public (undocumented) export const LEGACY_JENKINS_ANNOTATION = 'jenkins.io/github-folder'; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const Router: (_props: Props) => JSX.Element; +export const Router: () => JSX.Element; ``` diff --git a/plugins/jenkins/src/components/Cards/Cards.tsx b/plugins/jenkins/src/components/Cards/Cards.tsx index cb84964124..44bbc06f65 100644 --- a/plugins/jenkins/src/components/Cards/Cards.tsx +++ b/plugins/jenkins/src/components/Cards/Cards.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { LinearProgress, makeStyles, Theme } from '@material-ui/core'; import ExternalLinkIcon from '@material-ui/icons/Launch'; import { DateTime, Duration } from 'luxon'; @@ -77,13 +78,12 @@ const WidgetContent = ({ ); }; -const JenkinsApiErrorPanel = ({ - message, - errorType, -}: { +const JenkinsApiErrorPanel = (props: { message: string; errorType: ErrorType; }) => { + const { message, errorType } = props; + let title = undefined; if (errorType === ErrorType.CONNECTION_ERROR) { title = "Can't connect to Jenkins"; @@ -94,13 +94,11 @@ const JenkinsApiErrorPanel = ({ return ; }; -export const LatestRunCard = ({ - branch = 'master', - variant, -}: { +export const LatestRunCard = (props: { branch: string; variant?: InfoCardVariants; }) => { + const { branch = 'master', variant } = props; const [{ projects, loading, error }] = useBuilds({ branch }); const latestRun = projects?.[0]; return ( diff --git a/plugins/jenkins/src/components/Router.tsx b/plugins/jenkins/src/components/Router.tsx index b3561be2b0..ef86203e9e 100644 --- a/plugins/jenkins/src/components/Router.tsx +++ b/plugins/jenkins/src/components/Router.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Entity } from '@backstage/catalog-model'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; import { useEntity } from '@backstage/plugin-catalog-react'; @@ -23,13 +24,12 @@ import { buildRouteRef } from '../plugin'; import { CITable } from './BuildsPage/lib/CITable'; import { DetailedViewPage } from './BuildWithStepsPage/'; +/** @public */ export const isJenkinsAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[JENKINS_ANNOTATION]) || Boolean(entity.metadata.annotations?.[LEGACY_JENKINS_ANNOTATION]); -type Props = {}; - -export const Router = (_props: Props) => { +export const Router = () => { const { entity } = useEntity(); if (!isJenkinsAvailable(entity)) { diff --git a/plugins/jenkins/src/plugin.ts b/plugins/jenkins/src/plugin.ts index c32c9b50d1..7dbb6bfde1 100644 --- a/plugins/jenkins/src/plugin.ts +++ b/plugins/jenkins/src/plugin.ts @@ -26,16 +26,19 @@ import { } from '@backstage/core-plugin-api'; import { JenkinsClient, jenkinsApiRef } from './api'; +/** @public */ export const rootRouteRef = createRouteRef({ id: 'jenkins', }); +/** @public */ export const buildRouteRef = createSubRouteRef({ id: 'jenkins/builds', path: '/builds/:jobFullName/:buildNumber', parent: rootRouteRef, }); +/** @public */ export const jenkinsPlugin = createPlugin({ id: 'jenkins', apis: [ @@ -51,6 +54,7 @@ export const jenkinsPlugin = createPlugin({ }, }); +/** @public */ export const EntityJenkinsContent = jenkinsPlugin.provide( createRoutableExtension({ name: 'EntityJenkinsContent', @@ -58,6 +62,8 @@ export const EntityJenkinsContent = jenkinsPlugin.provide( mountPoint: rootRouteRef, }), ); + +/** @public */ export const EntityLatestJenkinsRunCard = jenkinsPlugin.provide( createComponentExtension({ name: 'EntityLatestJenkinsRunCard', diff --git a/plugins/newrelic-dashboard/api-report.md b/plugins/newrelic-dashboard/api-report.md index d74d69cad6..223a327d20 100644 --- a/plugins/newrelic-dashboard/api-report.md +++ b/plugins/newrelic-dashboard/api-report.md @@ -10,23 +10,15 @@ import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; // @public -export const DashboardSnapshotComponent: ({ - guid, - name, - permalink, -}: { +export const DashboardSnapshotComponent: (props: { guid: string; name: string; permalink: string; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityNewRelicDashboardCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityNewRelicDashboardCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityNewRelicDashboardContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityNewRelicDashboardContent: () => JSX.Element; @@ -35,8 +27,6 @@ export const EntityNewRelicDashboardContent: () => JSX.Element; // @public (undocumented) export const isNewRelicDashboardAvailable: (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "newRelicDashboardPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const newRelicDashboardPlugin: BackstagePlugin< { diff --git a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx index f501fd77bf..dcbde9279a 100644 --- a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx +++ b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import React from 'react'; import { Box, Grid, MenuItem, Select } from '@material-ui/core'; import { useApi, storageApiRef } from '@backstage/core-plugin-api'; @@ -27,13 +28,15 @@ import { newRelicDashboardApiRef } from '../../../api'; import { DashboardSnapshotSummary } from '../../../api/NewRelicDashboardApi'; import useObservable from 'react-use/lib/useObservable'; -type Props = { +/** + * @public + */ +export const DashboardSnapshot = (props: { guid: string; name: string; permalink: string; -}; - -export const DashboardSnapshot = ({ guid, name, permalink }: Props) => { +}) => { + const { guid, name, permalink } = props; const newRelicDashboardAPI = useApi(newRelicDashboardApiRef); const storageApi = useApi(storageApiRef).forBucket('newrelic-dashboard'); const setStorageValue = (value: number) => { diff --git a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshotList.tsx b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshotList.tsx index 85a73b0a4b..594a5fd53d 100644 --- a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshotList.tsx +++ b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshotList.tsx @@ -44,15 +44,14 @@ function TabPanel(props: TabPanelProps) { ); } + function a11yProps(index: number) { return { id: `simple-tab-${index}`, 'aria-controls': `simple-tabpanel-${index}`, }; } -type Props = { - guid: string; -}; + const useStyles = makeStyles( theme => ({ tabsWrapper: { @@ -79,7 +78,9 @@ const useStyles = makeStyles( }), { name: 'DashboardHeaderTabs' }, ); -export const DashboardSnapshotList = ({ guid }: Props) => { + +export const DashboardSnapshotList = (props: { guid: string }) => { + const { guid } = props; const styles = useStyles(); const newRelicDashboardAPI = useApi(newRelicDashboardApiRef); const { value, loading, error } = useAsync(async (): Promise< diff --git a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/index.ts b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/index.ts index 6b17582515..6d6ba5666b 100644 --- a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/index.ts +++ b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/index.ts @@ -13,5 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { DashboardSnapshot } from './DashboardSnapshot'; export { DashboardSnapshotList } from './DashboardSnapshotList'; diff --git a/plugins/newrelic-dashboard/src/plugin.ts b/plugins/newrelic-dashboard/src/plugin.ts index d4ed11573f..51be731ca7 100644 --- a/plugins/newrelic-dashboard/src/plugin.ts +++ b/plugins/newrelic-dashboard/src/plugin.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { createPlugin, configApiRef, @@ -24,6 +25,7 @@ import { import { newRelicDashboardApiRef, NewRelicDashboardClient } from './api'; import { rootRouteRef } from './routes'; +/** @public */ export const newRelicDashboardPlugin = createPlugin({ id: 'new-relic-dashboard', routes: { @@ -46,6 +48,8 @@ export const newRelicDashboardPlugin = createPlugin({ }), ], }); + +/** @public */ export const EntityNewRelicDashboardContent = newRelicDashboardPlugin.provide( createComponentExtension({ name: 'EntityNewRelicDashboardPage', @@ -55,6 +59,7 @@ export const EntityNewRelicDashboardContent = newRelicDashboardPlugin.provide( }), ); +/** @public */ export const EntityNewRelicDashboardCard = newRelicDashboardPlugin.provide( createComponentExtension({ name: 'EntityNewRelicDashboardListComponent', @@ -66,6 +71,7 @@ export const EntityNewRelicDashboardCard = newRelicDashboardPlugin.provide( }, }), ); + /** * Render dashboard snapshots from Newrelic in backstage. Use dashboards which have the tag `isDashboardPage: true` * diff --git a/plugins/pagerduty/api-report.md b/plugins/pagerduty/api-report.md index c81da24454..8bd8df6f7c 100644 --- a/plugins/pagerduty/api-report.md +++ b/plugins/pagerduty/api-report.md @@ -82,7 +82,7 @@ export class PagerDutyClient implements PagerDutyApi { // (undocumented) static fromConfig( configApi: ConfigApi, - { discoveryApi, fetchApi }: PagerDutyClientApiDependencies, + dependencies: PagerDutyClientApiDependencies, ): PagerDutyClient; // (undocumented) getChangeEventsByServiceId( diff --git a/plugins/pagerduty/src/api/client.ts b/plugins/pagerduty/src/api/client.ts index 69a702f66d..edc87d4b4a 100644 --- a/plugins/pagerduty/src/api/client.ts +++ b/plugins/pagerduty/src/api/client.ts @@ -43,8 +43,10 @@ const commonGetServiceParams = export class PagerDutyClient implements PagerDutyApi { static fromConfig( configApi: ConfigApi, - { discoveryApi, fetchApi }: PagerDutyClientApiDependencies, + dependencies: PagerDutyClientApiDependencies, ) { + const { discoveryApi, fetchApi } = dependencies; + const eventsBaseUrl: string = configApi.getOptionalString('pagerDuty.eventsBaseUrl') ?? 'https://events.pagerduty.com/v2'; @@ -55,6 +57,7 @@ export class PagerDutyClient implements PagerDutyApi { fetchApi, }); } + constructor(private readonly config: PagerDutyClientApiConfig) {} async getServiceByEntity(entity: Entity): Promise { diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index 24ff8e210d..222c18d655 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -248,11 +248,7 @@ export interface ScaffolderApi { ): Promise; listActions(): Promise; // (undocumented) - listTasks?({ - filterByOwnership, - }: { - filterByOwnership: 'owned' | 'all'; - }): Promise<{ + listTasks?(options: { filterByOwnership: 'owned' | 'all' }): Promise<{ tasks: ScaffolderTask[]; }>; scaffold( diff --git a/plugins/scaffolder/src/types.ts b/plugins/scaffolder/src/types.ts index d814119398..acb0f0e114 100644 --- a/plugins/scaffolder/src/types.ts +++ b/plugins/scaffolder/src/types.ts @@ -194,9 +194,7 @@ export interface ScaffolderApi { getTask(taskId: string): Promise; - listTasks?({ - filterByOwnership, - }: { + listTasks?(options: { filterByOwnership: 'owned' | 'all'; }): Promise<{ tasks: ScaffolderTask[] }>; diff --git a/plugins/search-backend-node/api-report.md b/plugins/search-backend-node/api-report.md index 64957f6366..62a4eabc26 100644 --- a/plugins/search-backend-node/api-report.md +++ b/plugins/search-backend-node/api-report.md @@ -56,9 +56,9 @@ export abstract class DecoratorBase extends Transform { // @public export class IndexBuilder { - constructor({ logger, searchEngine }: IndexBuilderOptions); - addCollator({ factory, schedule }: RegisterCollatorParameters): void; - addDecorator({ factory }: RegisterDecoratorParameters): void; + constructor(options: IndexBuilderOptions); + addCollator(options: RegisterCollatorParameters): void; + addDecorator(options: RegisterDecoratorParameters): void; build(): Promise<{ scheduler: Scheduler; }>; @@ -77,7 +77,7 @@ export type LunrQueryTranslator = (query: SearchQuery) => ConcreteLunrQuery; // @public export class LunrSearchEngine implements SearchEngine { - constructor({ logger }: { logger: Logger }); + constructor(options: { logger: Logger }); // (undocumented) protected docStore: Record; // (undocumented) @@ -157,8 +157,8 @@ export interface RegisterDecoratorParameters { // @public export class Scheduler { - constructor({ logger }: { logger: Logger }); - addToSchedule({ id, task, scheduledRunner }: ScheduleTaskParameters): void; + constructor(options: { logger: Logger }); + addToSchedule(options: ScheduleTaskParameters): void; start(): void; stop(): void; } diff --git a/plugins/search-backend-node/src/IndexBuilder.ts b/plugins/search-backend-node/src/IndexBuilder.ts index 3e1dae1c2f..0ba9ba0059 100644 --- a/plugins/search-backend-node/src/IndexBuilder.ts +++ b/plugins/search-backend-node/src/IndexBuilder.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { DocumentDecoratorFactory, DocumentTypeInfo, @@ -38,12 +39,12 @@ export class IndexBuilder { private searchEngine: SearchEngine; private logger: Logger; - constructor({ logger, searchEngine }: IndexBuilderOptions) { + constructor(options: IndexBuilderOptions) { this.collators = {}; this.decorators = {}; this.documentTypes = {}; - this.logger = logger; - this.searchEngine = searchEngine; + this.logger = options.logger; + this.searchEngine = options.searchEngine; } /** @@ -64,7 +65,9 @@ export class IndexBuilder { * Makes the index builder aware of a collator that should be executed at the * given refresh interval. */ - addCollator({ factory, schedule }: RegisterCollatorParameters): void { + addCollator(options: RegisterCollatorParameters): void { + const { factory, schedule } = options; + this.logger.info( `Added ${factory.constructor.name} collator factory for type ${factory.type}`, ); @@ -82,7 +85,8 @@ export class IndexBuilder { * the decorator, it will be applied to documents from all known collators, * otherwise it will only be applied to documents of the given types. */ - addDecorator({ factory }: RegisterDecoratorParameters): void { + addDecorator(options: RegisterDecoratorParameters): void { + const { factory } = options; const types = factory.types || ['*']; this.logger.info( `Added decorator ${factory.constructor.name} to types ${types.join( diff --git a/plugins/search-backend-node/src/Scheduler.ts b/plugins/search-backend-node/src/Scheduler.ts index 404823c53a..872a410808 100644 --- a/plugins/search-backend-node/src/Scheduler.ts +++ b/plugins/search-backend-node/src/Scheduler.ts @@ -43,8 +43,8 @@ export class Scheduler { private abortController: AbortController; private isRunning: boolean; - constructor({ logger }: { logger: Logger }) { - this.logger = logger; + constructor(options: { logger: Logger }) { + this.logger = options.logger; this.schedule = {}; this.abortController = new AbortController(); this.isRunning = false; @@ -55,7 +55,9 @@ export class Scheduler { * When running the tasks, the scheduler waits at least for the time specified * in the interval once the task was completed, before running it again. */ - addToSchedule({ id, task, scheduledRunner }: ScheduleTaskParameters) { + addToSchedule(options: ScheduleTaskParameters) { + const { id, task, scheduledRunner } = options; + if (this.isRunning) { throw new Error( 'Cannot add task to schedule that has already been started.', diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts index ec8550d721..4d6779950f 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts @@ -43,7 +43,7 @@ type LunrResultEnvelope = { }; /** - * Translator repsonsible for translating search term and filters to a query that the Lunr Search Engine understands. + * Translator responsible for translating search term and filters to a query that the Lunr Search Engine understands. * @public */ export type LunrQueryTranslator = (query: SearchQuery) => ConcreteLunrQuery; @@ -59,8 +59,8 @@ export class LunrSearchEngine implements SearchEngine { protected highlightPreTag: string; protected highlightPostTag: string; - constructor({ logger }: { logger: Logger }) { - this.logger = logger; + constructor(options: { logger: Logger }) { + this.logger = options.logger; this.docStore = {}; const uuidTag = uuid(); this.highlightPreTag = `<${uuidTag}>`; diff --git a/plugins/sentry/api-report.md b/plugins/sentry/api-report.md index e752eb2110..bd77c46aa6 100644 --- a/plugins/sentry/api-report.md +++ b/plugins/sentry/api-report.md @@ -42,8 +42,6 @@ export class MockSentryApi implements SentryApi { fetchIssues(): Promise; } -// Warning: (ae-missing-release-tag) "ProductionSentryApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class ProductionSentryApi implements SentryApi { constructor( @@ -61,13 +59,9 @@ export class ProductionSentryApi implements SentryApi { ): Promise; } -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const Router: ({ entity }: { entity: Entity }) => JSX.Element; +export const Router: (props: { entity: Entity }) => JSX.Element; -// Warning: (ae-missing-release-tag) "SentryApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface SentryApi { // (undocumented) @@ -80,8 +74,6 @@ export interface SentryApi { ): Promise; } -// Warning: (ae-missing-release-tag) "sentryApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const sentryApiRef: ApiRef; @@ -121,25 +113,15 @@ export type SentryIssue = { statusDetails: any; }; -// Warning: (ae-missing-release-tag) "SentryIssuesWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const SentryIssuesWidget: ({ - entity, - statsFor, - tableOptions, - variant, - query, -}: { +export const SentryIssuesWidget: (props: { entity: Entity; statsFor: '24h' | '14d' | ''; tableOptions: Options; - variant?: InfoCardVariants | undefined; - query?: string | undefined; + variant?: InfoCardVariants; + query?: string; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "sentryPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const sentryPlugin: BackstagePlugin< { diff --git a/plugins/sentry/src/api/production-api.ts b/plugins/sentry/src/api/production-api.ts index da77f8a47d..7fe4afdf98 100644 --- a/plugins/sentry/src/api/production-api.ts +++ b/plugins/sentry/src/api/production-api.ts @@ -20,6 +20,7 @@ import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { getProjectSlug, getOrganization } from './annotations'; +/** @public */ export class ProductionSentryApi implements SentryApi { constructor( private readonly discoveryApi: DiscoveryApi, diff --git a/plugins/sentry/src/api/sentry-api.ts b/plugins/sentry/src/api/sentry-api.ts index 507803804d..73f1301cad 100644 --- a/plugins/sentry/src/api/sentry-api.ts +++ b/plugins/sentry/src/api/sentry-api.ts @@ -18,10 +18,12 @@ import { SentryIssue } from './sentry-issue'; import { createApiRef } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; +/** @public */ export const sentryApiRef = createApiRef({ id: 'plugin.sentry.service', }); +/** @public */ export interface SentryApi { fetchIssues( entity: Entity, diff --git a/plugins/sentry/src/components/Router.tsx b/plugins/sentry/src/components/Router.tsx index 2a3172824a..e683a6c7fa 100644 --- a/plugins/sentry/src/components/Router.tsx +++ b/plugins/sentry/src/components/Router.tsx @@ -19,14 +19,15 @@ import { Entity } from '@backstage/catalog-model'; import { Route, Routes } from 'react-router'; import { SentryIssuesWidget } from './SentryIssuesWidget'; -export const Router = ({ entity }: { entity: Entity }) => { +/** @public */ +export const Router = (props: { entity: Entity }) => { return ( ; variant?: InfoCardVariants; query?: string; }) => { + const { + entity, + statsFor, + tableOptions, + variant = 'gridItem', + query = '', + } = props; const errorApi = useApi(errorApiRef); const sentryApi = useApi(sentryApiRef); diff --git a/plugins/sentry/src/plugin.ts b/plugins/sentry/src/plugin.ts index 981745c8fe..51957b87a3 100644 --- a/plugins/sentry/src/plugin.ts +++ b/plugins/sentry/src/plugin.ts @@ -24,10 +24,12 @@ import { identityApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const rootRouteRef = createRouteRef({ id: 'sentry', }); +/** @public */ export const sentryPlugin = createPlugin({ id: 'sentry', apis: [ diff --git a/plugins/sonarqube/api-report.md b/plugins/sonarqube/api-report.md index 06e4b8578e..e0a51479a4 100644 --- a/plugins/sonarqube/api-report.md +++ b/plugins/sonarqube/api-report.md @@ -9,46 +9,29 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { InfoCardVariants } from '@backstage/core-components'; -// Warning: (ae-missing-release-tag) "EntitySonarQubeCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntitySonarQubeCard: ({ - variant, - duplicationRatings, -}: { - variant?: InfoCardVariants | undefined; - duplicationRatings?: - | { - greaterThan: number; - rating: '1.0' | '2.0' | '3.0' | '4.0' | '5.0'; - }[] - | undefined; -}) => JSX.Element; +export type DuplicationRating = { + greaterThan: number; + rating: '1.0' | '2.0' | '3.0' | '4.0' | '5.0'; +}; -// Warning: (ae-missing-release-tag) "isSonarQubeAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const isSonarQubeAvailable: (entity: Entity) => boolean; - -// Warning: (ae-missing-release-tag) "SonarQubeCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const SonarQubeCard: ({ - variant, - duplicationRatings, -}: { +export const EntitySonarQubeCard: (props: { variant?: InfoCardVariants | undefined; duplicationRatings?: DuplicationRating[] | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "sonarQubePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export const isSonarQubeAvailable: (entity: Entity) => boolean; + +// @public (undocumented) +export const SonarQubeCard: (props: { + variant?: InfoCardVariants; + duplicationRatings?: DuplicationRating[]; +}) => JSX.Element; + // @public (undocumented) const sonarQubePlugin: BackstagePlugin<{}, {}, {}>; export { sonarQubePlugin as plugin }; export { sonarQubePlugin }; - -// Warnings were encountered during analysis: -// -// src/components/SonarQubeCard/SonarQubeCard.d.ts:9:5 - (ae-forgotten-export) The symbol "DuplicationRating" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/sonarqube/src/api/SonarQubeApi.ts b/plugins/sonarqube/src/api/SonarQubeApi.ts index 271f1d8e8e..9dbb6331dd 100644 --- a/plugins/sonarqube/src/api/SonarQubeApi.ts +++ b/plugins/sonarqube/src/api/SonarQubeApi.ts @@ -38,10 +38,7 @@ export const sonarQubeApiRef = createApiRef({ }); export type SonarQubeApi = { - getFindingSummary({ - componentKey, - projectInstance, - }: { + getFindingSummary(options: { componentKey?: string; projectInstance?: string; }): Promise; diff --git a/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx b/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx index af91bc5469..b32a66aaa3 100644 --- a/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx +++ b/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx @@ -32,7 +32,6 @@ import { Percentage } from './Percentage'; import { Rating } from './Rating'; import { RatingCard } from './RatingCard'; import { Value } from './Value'; - import { EmptyState, InfoCard, @@ -40,7 +39,6 @@ import { MissingAnnotationEmptyState, Progress, } from '@backstage/core-components'; - import { useApi } from '@backstage/core-plugin-api'; const useStyles = makeStyles(theme => ({ @@ -72,7 +70,8 @@ const useStyles = makeStyles(theme => ({ }, })); -type DuplicationRating = { +/** @public */ +export type DuplicationRating = { greaterThan: number; rating: '1.0' | '2.0' | '3.0' | '4.0' | '5.0'; }; @@ -85,13 +84,15 @@ const defaultDuplicationRatings: DuplicationRating[] = [ { greaterThan: 20, rating: '5.0' }, ]; -export const SonarQubeCard = ({ - variant = 'gridItem', - duplicationRatings = defaultDuplicationRatings, -}: { +/** @public */ +export const SonarQubeCard = (props: { variant?: InfoCardVariants; duplicationRatings?: DuplicationRating[]; }) => { + const { + variant = 'gridItem', + duplicationRatings = defaultDuplicationRatings, + } = props; const { entity } = useEntity(); const sonarQubeApi = useApi(sonarQubeApiRef); diff --git a/plugins/sonarqube/src/components/SonarQubeCard/Value.tsx b/plugins/sonarqube/src/components/SonarQubeCard/Value.tsx index 58fb401ba1..a166f62a89 100644 --- a/plugins/sonarqube/src/components/SonarQubeCard/Value.tsx +++ b/plugins/sonarqube/src/components/SonarQubeCard/Value.tsx @@ -27,8 +27,7 @@ const useStyles = makeStyles((theme: BackstageTheme) => { }; }); -export const Value = ({ value }: { value?: string }) => { +export const Value = (props: { value?: string }) => { const classes = useStyles(); - - return {value}; + return {props.value}; }; diff --git a/plugins/sonarqube/src/components/SonarQubeCard/index.ts b/plugins/sonarqube/src/components/SonarQubeCard/index.ts index 44ab809439..307a9abc41 100644 --- a/plugins/sonarqube/src/components/SonarQubeCard/index.ts +++ b/plugins/sonarqube/src/components/SonarQubeCard/index.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +export type { DuplicationRating } from './SonarQubeCard'; export { SonarQubeCard } from './SonarQubeCard'; diff --git a/plugins/sonarqube/src/components/useProjectKey.ts b/plugins/sonarqube/src/components/useProjectKey.ts index 7a5a428f49..59a572a6c4 100644 --- a/plugins/sonarqube/src/components/useProjectKey.ts +++ b/plugins/sonarqube/src/components/useProjectKey.ts @@ -19,6 +19,7 @@ import { Entity } from '@backstage/catalog-model'; export const SONARQUBE_PROJECT_KEY_ANNOTATION = 'sonarqube.org/project-key'; export const SONARQUBE_PROJECT_INSTANCE_SEPARATOR = '/'; +/** @public */ export const isSonarQubeAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[SONARQUBE_PROJECT_KEY_ANNOTATION]); diff --git a/plugins/sonarqube/src/plugin.ts b/plugins/sonarqube/src/plugin.ts index 4ac49b2350..0ea62de492 100644 --- a/plugins/sonarqube/src/plugin.ts +++ b/plugins/sonarqube/src/plugin.ts @@ -23,6 +23,7 @@ import { identityApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const sonarQubePlugin = createPlugin({ id: 'sonarqube', apis: [ @@ -41,6 +42,7 @@ export const sonarQubePlugin = createPlugin({ ], }); +/** @public */ export const EntitySonarQubeCard = sonarQubePlugin.provide( createComponentExtension({ name: 'EntitySonarQubeCard', diff --git a/plugins/tech-insights-node/api-report.md b/plugins/tech-insights-node/api-report.md index 84677bdcbc..19645d604b 100644 --- a/plugins/tech-insights-node/api-report.md +++ b/plugins/tech-insights-node/api-report.md @@ -169,11 +169,7 @@ export interface TechInsightsStore { [factRef: string]: FlatTechInsightFact; }>; getLatestSchemas(ids?: string[]): Promise; - insertFacts({ - id, - facts, - lifecycle, - }: { + insertFacts(options: { id: string; facts: TechInsightFact[]; lifecycle?: FactLifecycle; diff --git a/plugins/tech-insights-node/src/persistence.ts b/plugins/tech-insights-node/src/persistence.ts index 4324c24c42..31fda403a8 100644 --- a/plugins/tech-insights-node/src/persistence.ts +++ b/plugins/tech-insights-node/src/persistence.ts @@ -38,11 +38,7 @@ export interface TechInsightsStore { * @param facts - A collection of TechInsightFacts * @param lifecycle - (Optional) Fact lifecycle object indicating the expiration logic for these items */ - insertFacts({ - id, - facts, - lifecycle, - }: { + insertFacts(options: { id: string; facts: TechInsightFact[]; lifecycle?: FactLifecycle; diff --git a/plugins/tech-insights/api-report.md b/plugins/tech-insights/api-report.md index 694fb583d2..4f2687fa48 100644 --- a/plugins/tech-insights/api-report.md +++ b/plugins/tech-insights/api-report.md @@ -33,22 +33,14 @@ export type CheckResultRenderer = { }; // @public (undocumented) -export const EntityTechInsightsScorecardCard: ({ - title, - description, - checksId, -}: { +export const EntityTechInsightsScorecardCard: (props: { title?: string | undefined; description?: string | undefined; checksId?: string[] | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityTechInsightsScorecardContent: ({ - title, - description, - checksId, -}: { +export const EntityTechInsightsScorecardContent: (props: { title?: string | undefined; description?: string | undefined; checksId?: string[] | undefined; diff --git a/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx b/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx index f6bc4b0cb5..57b8915b58 100644 --- a/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx +++ b/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx @@ -23,15 +23,12 @@ import { ScorecardInfo } from '../ScorecardsInfo'; import Alert from '@material-ui/lab/Alert'; import { techInsightsApiRef } from '../../api/TechInsightsApi'; -export const ScorecardsCard = ({ - title, - description, - checksId, -}: { +export const ScorecardsCard = (props: { title?: string; description?: string; checksId?: string[]; }) => { + const { title, description, checksId } = props; const api = useApi(techInsightsApiRef); const { namespace, kind, name } = useParams(); const { value, loading, error } = useAsync( diff --git a/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx b/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx index 07a839d7a8..c3d02c938f 100644 --- a/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx +++ b/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx @@ -31,15 +31,12 @@ const useStyles = makeStyles(() => ({ }, })); -export const ScorecardsContent = ({ - title, - description, - checksId, -}: { +export const ScorecardsContent = (props: { title?: string; description?: string; checksId?: string[]; }) => { + const { title, description, checksId } = props; const classes = useStyles(); const api = useApi(techInsightsApiRef); const { namespace, kind, name } = useParams(); diff --git a/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx b/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx index 2c5abb3596..9d5fc5ac9e 100644 --- a/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx +++ b/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx @@ -30,15 +30,9 @@ const useStyles = makeStyles((theme: BackstageTheme) => ({ }, })); -type Checks = { - checks: CheckResult[]; - title?: string; - description?: string; -}; - const infoCard = ( - title: Checks['title'], - description: Checks['description'], + title: string | undefined, + description: string | undefined, className: string, element: JSX.Element, ) => ( @@ -54,7 +48,12 @@ const infoCard = ( ); -export const ScorecardInfo = ({ checks, title, description }: Checks) => { +export const ScorecardInfo = (props: { + checks: CheckResult[]; + title?: string; + description?: string; +}) => { + const { checks, title, description } = props; const classes = useStyles(); const api = useApi(techInsightsApiRef); diff --git a/plugins/techdocs-module-addons-contrib/api-report.md b/plugins/techdocs-module-addons-contrib/api-report.md index f787e0678c..68fad9121d 100644 --- a/plugins/techdocs-module-addons-contrib/api-report.md +++ b/plugins/techdocs-module-addons-contrib/api-report.md @@ -26,9 +26,7 @@ export type ReportIssueTemplate = { }; // @public -export type ReportIssueTemplateBuilder = ({ - selection, -}: { +export type ReportIssueTemplateBuilder = (options: { selection: Selection; }) => ReportIssueTemplate; diff --git a/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts b/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts index 0816b45d9d..84143a40f2 100644 --- a/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts +++ b/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts @@ -37,9 +37,7 @@ export type ReportIssueTemplate = { * * @public */ -export type ReportIssueTemplateBuilder = ({ - selection, -}: { +export type ReportIssueTemplateBuilder = (options: { selection: Selection; }) => ReportIssueTemplate; diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index ef037fbb05..7922ea992e 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -345,11 +345,7 @@ export type TechDocsReaderPageProps = { }; // @public -export type TechDocsReaderPageRenderFunction = ({ - techdocsMetadataValue, - entityMetadataValue, - entityRef, -}: { +export type TechDocsReaderPageRenderFunction = (options: { techdocsMetadataValue?: TechDocsMetadata_2 | undefined; entityMetadataValue?: TechDocsEntityMetadata_2 | undefined; entityRef: CompoundEntityRef; diff --git a/plugins/techdocs/src/types.ts b/plugins/techdocs/src/types.ts index 014bf0d090..c07f7c3907 100644 --- a/plugins/techdocs/src/types.ts +++ b/plugins/techdocs/src/types.ts @@ -25,11 +25,7 @@ import { * * @public */ -export type TechDocsReaderPageRenderFunction = ({ - techdocsMetadataValue, - entityMetadataValue, - entityRef, -}: { +export type TechDocsReaderPageRenderFunction = (options: { techdocsMetadataValue?: TechDocsMetadata | undefined; entityMetadataValue?: TechDocsEntityMetadata | undefined; entityRef: CompoundEntityRef; diff --git a/plugins/user-settings/api-report.md b/plugins/user-settings/api-report.md index 914f8b2385..d6aca3c46f 100644 --- a/plugins/user-settings/api-report.md +++ b/plugins/user-settings/api-report.md @@ -20,7 +20,7 @@ import { SessionApi } from '@backstage/core-plugin-api'; // @public (undocumented) export const DefaultProviderSettings: ({ configuredProviders, -}: Props_3) => JSX.Element; +}: Props_2) => JSX.Element; // Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "ProviderSettingsItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -31,13 +31,10 @@ export const ProviderSettingsItem: ({ description, icon: Icon, apiRef, -}: Props_4) => JSX.Element; +}: Props_3) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "SettingsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const Router: ({ providerSettings }: Props) => JSX.Element; +export const Router: (props: { providerSettings?: JSX.Element }) => JSX.Element; // Warning: (ae-forgotten-export) The symbol "SettingsProps" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "Settings" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -59,7 +56,7 @@ export const UserSettingsAppearanceCard: () => JSX.Element; // @public (undocumented) export const UserSettingsAuthProviders: ({ providerSettings, -}: Props_2) => JSX.Element; +}: Props) => JSX.Element; // Warning: (ae-missing-release-tag) "UserSettingsFeatureFlags" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -84,9 +81,7 @@ export const UserSettingsMenu: () => JSX.Element; // Warning: (ae-missing-release-tag) "UserSettingsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const UserSettingsPage: ({ - providerSettings, -}: { +export const UserSettingsPage: (props: { providerSettings?: JSX.Element | undefined; }) => JSX.Element; @@ -117,7 +112,7 @@ export const UserSettingsProfileCard: () => JSX.Element; // Warning: (ae-missing-release-tag) "UserSettingsSignInAvatar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const UserSettingsSignInAvatar: ({ size }: Props_5) => JSX.Element; +export const UserSettingsSignInAvatar: ({ size }: Props_4) => JSX.Element; // @public export const UserSettingsTab: (props: UserSettingsTabProps) => JSX.Element; diff --git a/plugins/user-settings/src/components/SettingsPage.tsx b/plugins/user-settings/src/components/SettingsPage.tsx index dcaf62d435..9803bf4761 100644 --- a/plugins/user-settings/src/components/SettingsPage.tsx +++ b/plugins/user-settings/src/components/SettingsPage.tsx @@ -28,11 +28,11 @@ import { UserSettingsFeatureFlags } from './FeatureFlags'; import { UserSettingsGeneral } from './General'; import { USER_SETTINGS_TAB_KEY, UserSettingsTabProps } from './UserSettingsTab'; -type Props = { - providerSettings?: JSX.Element; -}; - -export const SettingsPage = ({ providerSettings }: Props) => { +/** + * @public + */ +export const SettingsPage = (props: { providerSettings?: JSX.Element }) => { + const { providerSettings } = props; const { isMobile } = useSidebarPinState(); const outlet = useOutlet(); diff --git a/plugins/vault-backend/api-report.md b/plugins/vault-backend/api-report.md index d2e9e1b177..2b1fb14bd0 100644 --- a/plugins/vault-backend/api-report.md +++ b/plugins/vault-backend/api-report.md @@ -48,7 +48,7 @@ export type VaultBuilderReturn = { // @public export class VaultClient implements VaultApi { - constructor({ config }: { config: Config }); + constructor(options: { config: Config }); // (undocumented) getFrontendSecretsUrl(): string; // (undocumented) diff --git a/plugins/vault-backend/src/service/vaultApi.ts b/plugins/vault-backend/src/service/vaultApi.ts index 158778294a..16aa39ae03 100644 --- a/plugins/vault-backend/src/service/vaultApi.ts +++ b/plugins/vault-backend/src/service/vaultApi.ts @@ -79,8 +79,8 @@ export class VaultClient implements VaultApi { private vaultConfig: VaultConfig; private readonly limit = plimit(5); - constructor({ config }: { config: Config }) { - this.vaultConfig = getVaultConfig(config); + constructor(options: { config: Config }) { + this.vaultConfig = getVaultConfig(options.config); } private async callApi( diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 32b27e06ca..9275b93842 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -204,9 +204,6 @@ const ALLOW_WARNINGS = [ 'plugins/api-docs', 'plugins/app-backend', 'plugins/auth-backend', - 'plugins/azure-devops', - 'plugins/azure-devops-backend', - 'plugins/azure-devops-common', 'plugins/badges', 'plugins/badges-backend', 'plugins/bitrise', @@ -223,7 +220,6 @@ const ALLOW_WARNINGS = [ 'plugins/explore', 'plugins/explore-react', 'plugins/firehydrant', - 'plugins/fossa', 'plugins/gcalendar', 'plugins/gcp-projects', 'plugins/git-release-manager', @@ -250,7 +246,6 @@ const ALLOW_WARNINGS = [ 'plugins/search-backend-module-pg', 'plugins/sentry', 'plugins/shortcuts', - 'plugins/sonarqube', 'plugins/splunk-on-call', 'plugins/tech-radar', 'plugins/user-settings', From 1969e7447ac035b7dae4c59ee6304b8092c552f3 Mon Sep 17 00:00:00 2001 From: Joao Paulo Moreira Antunes Date: Thu, 18 Aug 2022 10:39:34 -0300 Subject: [PATCH 098/275] chore:add adopter parana_banco Signed-off-by: Joao Paulo Moreira Antunes --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 3a53f7d990..902952a90e 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -207,3 +207,4 @@ _You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKi | [Fanatics](https://www.fanaticsinc.com/) | [Rory Scott](mailto:rscott@fanatics.com) | Internal Portal consolidating documentation, making it easier to manage applications, internal developer community platform, and self-service cloud infrastructure + pipelines. | | [Appfolio](https://appfolio.com) | [Andy Vaughn](mailto:andy.vaughn@appfolio.com) | Internal software catalog, tech radar, documentation portal to disambiguate software and domain ownership, foster exploration of available developer platform services and tools, improve communication, democratize documentation and knowledge sharing, and coordinate the software lifecycle; all in service of a best-in-class developer experience. | | [isaac](https://isaac.com.br/) | [Leonardo Borges](mailto:leonardo.borges@isaac.com.br), [Ordilei Souza](mailto:ordilei.souza@isaac.com.br) | We're using Backstage as our Internal Developer Portal and main microservices catalog for mapping ownership, health and metrics for each one. | +| [Paraná Banco](https://site.paranabanco.com.br/) | [Joao Antunes](mailto:joaopma@pbtech.net.br) | Internal software catalog, documentation and ownership, improve communication, democratize documentation and knowledge sharing, and coordinate the software lifecycle; all in service of a best-in-class developer experience. | \ No newline at end of file From f6be17460d1e01cd228d7553a900cd4e03680e5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 18 Aug 2022 15:42:17 +0200 Subject: [PATCH 099/275] well, let's clean up some more MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/clever-beans-turn.md | 8 ++ plugins/kafka-backend/api-report.md | 11 ++- plugins/kafka-backend/src/index.ts | 1 + plugins/kafka-backend/src/service/router.ts | 2 + plugins/kafka/api-report.md | 15 +--- plugins/kafka/src/Router.tsx | 6 +- plugins/kafka/src/constants.ts | 3 + plugins/kafka/src/plugin.ts | 3 + plugins/lighthouse/api-report.md | 81 ++++--------------- plugins/lighthouse/src/Router.tsx | 7 +- plugins/lighthouse/src/api.ts | 26 ++++-- .../Cards/LastLighthouseAuditCard.tsx | 26 +++--- plugins/lighthouse/src/plugin.ts | 4 + plugins/proxy-backend/api-report.md | 15 +++- plugins/proxy-backend/src/service/index.ts | 1 + plugins/proxy-backend/src/service/router.ts | 2 + scripts/api-extractor.ts | 4 - 17 files changed, 101 insertions(+), 114 deletions(-) create mode 100644 .changeset/clever-beans-turn.md diff --git a/.changeset/clever-beans-turn.md b/.changeset/clever-beans-turn.md new file mode 100644 index 0000000000..69846a2516 --- /dev/null +++ b/.changeset/clever-beans-turn.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-kafka': patch +'@backstage/plugin-kafka-backend': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-proxy-backend': patch +--- + +Minor API signatures cleanup diff --git a/plugins/kafka-backend/api-report.md b/plugins/kafka-backend/api-report.md index e73d8e9e03..20c8260b52 100644 --- a/plugins/kafka-backend/api-report.md +++ b/plugins/kafka-backend/api-report.md @@ -7,9 +7,14 @@ import { Config } from '@backstage/config'; import express from 'express'; import { Logger } from 'winston'; -// Warning: (ae-forgotten-export) The symbol "RouterOptions" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; + +// @public (undocumented) +export interface RouterOptions { + // (undocumented) + config: Config; + // (undocumented) + logger: Logger; +} ``` diff --git a/plugins/kafka-backend/src/index.ts b/plugins/kafka-backend/src/index.ts index ab1026e99d..70b7fb45a4 100644 --- a/plugins/kafka-backend/src/index.ts +++ b/plugins/kafka-backend/src/index.ts @@ -20,4 +20,5 @@ * @packageDocumentation */ +export type { RouterOptions } from './service/router'; export { createRouter } from './service/router'; diff --git a/plugins/kafka-backend/src/service/router.ts b/plugins/kafka-backend/src/service/router.ts index 6c8bce7af3..1271e8f48c 100644 --- a/plugins/kafka-backend/src/service/router.ts +++ b/plugins/kafka-backend/src/service/router.ts @@ -23,6 +23,7 @@ import { KafkaApi, KafkaJsApiImpl } from './KafkaApi'; import _ from 'lodash'; import { getClusterDetails } from '../config/ClusterReader'; +/** @public */ export interface RouterOptions { logger: Logger; config: Config; @@ -84,6 +85,7 @@ export const makeRouter = ( return router; }; +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/plugins/kafka/api-report.md b/plugins/kafka/api-report.md index 844082764e..18b51b77fa 100644 --- a/plugins/kafka/api-report.md +++ b/plugins/kafka/api-report.md @@ -9,26 +9,18 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "EntityKafkaContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityKafkaContent: (_props: {}) => JSX.Element; +export const EntityKafkaContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "isPluginApplicableToEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; export { isPluginApplicableToEntity as isKafkaAvailable }; export { isPluginApplicableToEntity }; -// Warning: (ae-missing-release-tag) "KAFKA_CONSUMER_GROUP_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const KAFKA_CONSUMER_GROUP_ANNOTATION = 'kafka.apache.org/consumer-groups'; -// Warning: (ae-missing-release-tag) "kafkaPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const kafkaPlugin: BackstagePlugin< { @@ -40,9 +32,6 @@ const kafkaPlugin: BackstagePlugin< export { kafkaPlugin }; export { kafkaPlugin as plugin }; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const Router: (_props: Props) => JSX.Element; +export const Router: () => JSX.Element; ``` diff --git a/plugins/kafka/src/Router.tsx b/plugins/kafka/src/Router.tsx index 133326b5b9..af6d2d7ef8 100644 --- a/plugins/kafka/src/Router.tsx +++ b/plugins/kafka/src/Router.tsx @@ -22,12 +22,12 @@ import { KAFKA_CONSUMER_GROUP_ANNOTATION } from './constants'; import { KafkaTopicsForConsumer } from './components/ConsumerGroupOffsets/ConsumerGroupOffsets'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; +/** @public */ export const isPluginApplicableToEntity = (entity: Entity) => Boolean(entity.metadata.annotations?.[KAFKA_CONSUMER_GROUP_ANNOTATION]); -type Props = {}; - -export const Router = (_props: Props) => { +/** @public */ +export const Router = () => { const { entity } = useEntity(); if (!isPluginApplicableToEntity(entity)) { diff --git a/plugins/kafka/src/constants.ts b/plugins/kafka/src/constants.ts index b85a738888..a900ec6abe 100644 --- a/plugins/kafka/src/constants.ts +++ b/plugins/kafka/src/constants.ts @@ -13,6 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +/** @public */ export const KAFKA_CONSUMER_GROUP_ANNOTATION = 'kafka.apache.org/consumer-groups'; + export const KAFKA_DASHBOARD_URL = 'kafka.apache.org/dashboard-urls'; diff --git a/plugins/kafka/src/plugin.ts b/plugins/kafka/src/plugin.ts index 6caa4ca5ca..395152729b 100644 --- a/plugins/kafka/src/plugin.ts +++ b/plugins/kafka/src/plugin.ts @@ -26,10 +26,12 @@ import { } from '@backstage/core-plugin-api'; import { KafkaDashboardClient } from './api/KafkaDashboardClient'; +/** @public */ export const rootCatalogKafkaRouteRef = createRouteRef({ id: 'kafka', }); +/** @public */ export const kafkaPlugin = createPlugin({ id: 'kafka', apis: [ @@ -50,6 +52,7 @@ export const kafkaPlugin = createPlugin({ }, }); +/** @public */ export const EntityKafkaContent = kafkaPlugin.provide( createRoutableExtension({ name: 'EntityKafkaContent', diff --git a/plugins/lighthouse/api-report.md b/plugins/lighthouse/api-report.md index a53bef3cb0..17c771e187 100644 --- a/plugins/lighthouse/api-report.md +++ b/plugins/lighthouse/api-report.md @@ -12,14 +12,19 @@ import { Entity } from '@backstage/catalog-model'; import { InfoCardVariants } from '@backstage/core-components'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "Audit" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Audit = AuditRunning | AuditFailed | AuditCompleted; -// Warning: (ae-forgotten-export) The symbol "AuditBase" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "AuditCompleted" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export interface AuditBase { + // (undocumented) + id: string; + // (undocumented) + timeCreated: string; + // (undocumented) + url: string; +} + // @public (undocumented) export interface AuditCompleted extends AuditBase { // (undocumented) @@ -32,8 +37,6 @@ export interface AuditCompleted extends AuditBase { timeCompleted: string; } -// Warning: (ae-missing-release-tag) "AuditFailed" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AuditFailed extends AuditBase { // (undocumented) @@ -42,38 +45,24 @@ export interface AuditFailed extends AuditBase { timeCompleted: string; } -// Warning: (ae-missing-release-tag) "AuditRunning" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AuditRunning extends AuditBase { // (undocumented) status: 'RUNNING'; } -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EmbeddedRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EmbeddedRouter: (_props: Props) => JSX.Element; +export const EmbeddedRouter: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLastLighthouseAuditCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityLastLighthouseAuditCard: ({ - dense, - variant, -}: { +export const EntityLastLighthouseAuditCard: (props: { dense?: boolean | undefined; variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLighthouseContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityLighthouseContent: (_props: {}) => JSX.Element; +export const EntityLighthouseContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "FetchError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class FetchError extends Error { // (undocumented) @@ -82,15 +71,11 @@ export class FetchError extends Error { get name(): string; } -// Warning: (ae-missing-release-tag) "isLighthouseAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isLighthouseAvailable: (entity: Entity) => boolean; export { isLighthouseAvailable }; export { isLighthouseAvailable as isPluginApplicableToEntity }; -// Warning: (ae-missing-release-tag) "LASListRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface LASListRequest { // (undocumented) @@ -99,8 +84,6 @@ export interface LASListRequest { offset?: number; } -// Warning: (ae-missing-release-tag) "LASListResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface LASListResponse { // (undocumented) @@ -113,19 +96,12 @@ export interface LASListResponse { total: number; } -// Warning: (ae-missing-release-tag) "LastLighthouseAuditCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const LastLighthouseAuditCard: ({ - dense, - variant, -}: { - dense?: boolean | undefined; - variant?: InfoCardVariants | undefined; +export const LastLighthouseAuditCard: (props: { + dense?: boolean; + variant?: InfoCardVariants; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "LighthouseApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type LighthouseApi = { url: string; @@ -135,13 +111,9 @@ export type LighthouseApi = { getWebsiteByUrl: (websiteUrl: string) => Promise; }; -// Warning: (ae-missing-release-tag) "lighthouseApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const lighthouseApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "LighthouseCategoryAbbr" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface LighthouseCategoryAbbr { // (undocumented) @@ -152,8 +124,6 @@ export interface LighthouseCategoryAbbr { title: string; } -// Warning: (ae-missing-release-tag) "LighthouseCategoryId" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type LighthouseCategoryId = | 'pwa' @@ -162,13 +132,9 @@ export type LighthouseCategoryId = | 'accessibility' | 'best-practices'; -// Warning: (ae-missing-release-tag) "LighthousePage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const LighthousePage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "lighthousePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const lighthousePlugin: BackstagePlugin< { @@ -181,8 +147,6 @@ const lighthousePlugin: BackstagePlugin< export { lighthousePlugin }; export { lighthousePlugin as plugin }; -// Warning: (ae-missing-release-tag) "LighthouseRestApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class LighthouseRestApi implements LighthouseApi { constructor(url: string); @@ -193,23 +157,16 @@ export class LighthouseRestApi implements LighthouseApi { // (undocumented) getWebsiteForAuditId(auditId: string): Promise; // (undocumented) - getWebsiteList({ - limit, - offset, - }?: LASListRequest): Promise; + getWebsiteList(options?: LASListRequest): Promise; // (undocumented) triggerAudit(payload: TriggerAuditPayload): Promise; // (undocumented) url: string; } -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const Router: () => JSX.Element; -// Warning: (ae-missing-release-tag) "TriggerAuditPayload" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface TriggerAuditPayload { // (undocumented) @@ -224,8 +181,6 @@ export interface TriggerAuditPayload { url: string; } -// Warning: (ae-missing-release-tag) "Website" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Website { // (undocumented) @@ -236,8 +191,6 @@ export interface Website { url: string; } -// Warning: (ae-missing-release-tag) "WebsiteListResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type WebsiteListResponse = LASListResponse; ``` diff --git a/plugins/lighthouse/src/Router.tsx b/plugins/lighthouse/src/Router.tsx index 1c41f522f4..04c00cde41 100644 --- a/plugins/lighthouse/src/Router.tsx +++ b/plugins/lighthouse/src/Router.tsx @@ -25,9 +25,11 @@ import { LIGHTHOUSE_WEBSITE_URL_ANNOTATION } from '../constants'; import { AuditListForEntity } from './components/AuditList/AuditListForEntity'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; +/** @public */ export const isLighthouseAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[LIGHTHOUSE_WEBSITE_URL_ANNOTATION]); +/** @public */ export const Router = () => ( } /> @@ -36,9 +38,8 @@ export const Router = () => ( ); -type Props = {}; - -export const EmbeddedRouter = (_props: Props) => { +/** @public */ +export const EmbeddedRouter = () => { const { entity } = useEntity(); if (!isLighthouseAvailable(entity)) { diff --git a/plugins/lighthouse/src/api.ts b/plugins/lighthouse/src/api.ts index b40b70356f..e4ccefe2a1 100644 --- a/plugins/lighthouse/src/api.ts +++ b/plugins/lighthouse/src/api.ts @@ -17,6 +17,7 @@ import { Config } from '@backstage/config'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export type LighthouseCategoryId = | 'pwa' | 'seo' @@ -24,17 +25,20 @@ export type LighthouseCategoryId = | 'accessibility' | 'best-practices'; +/** @public */ export interface LighthouseCategoryAbbr { id: LighthouseCategoryId; score: number; title: string; } +/** @public */ export interface LASListRequest { offset?: number; limit?: number; } +/** @public */ export interface LASListResponse { items: Item[]; total: number; @@ -42,21 +46,25 @@ export interface LASListResponse { limit: number; } -interface AuditBase { +/** @public */ +export interface AuditBase { id: string; url: string; timeCreated: string; } +/** @public */ export interface AuditRunning extends AuditBase { status: 'RUNNING'; } +/** @public */ export interface AuditFailed extends AuditBase { status: 'FAILED'; timeCompleted: string; } +/** @public */ export interface AuditCompleted extends AuditBase { status: 'COMPLETED'; timeCompleted: string; @@ -64,16 +72,20 @@ export interface AuditCompleted extends AuditBase { categories: Record; } +/** @public */ export type Audit = AuditRunning | AuditFailed | AuditCompleted; +/** @public */ export interface Website { url: string; audits: Audit[]; lastAudit: Audit; } +/** @public */ export type WebsiteListResponse = LASListResponse; +/** @public */ export interface TriggerAuditPayload { url: string; options: { @@ -85,6 +97,7 @@ export interface TriggerAuditPayload { }; } +/** @public */ export class FetchError extends Error { get name(): string { return this.constructor.name; @@ -99,6 +112,7 @@ export class FetchError extends Error { } } +/** @public */ export type LighthouseApi = { url: string; getWebsiteList: (listOptions: LASListRequest) => Promise; @@ -107,10 +121,12 @@ export type LighthouseApi = { getWebsiteByUrl: (websiteUrl: string) => Promise; }; +/** @public */ export const lighthouseApiRef = createApiRef({ id: 'plugin.lighthouse.service', }); +/** @public */ export class LighthouseRestApi implements LighthouseApi { static fromConfig(config: Config) { return new LighthouseRestApi(config.getString('lighthouse.baseUrl')); @@ -124,10 +140,10 @@ export class LighthouseRestApi implements LighthouseApi { return await resp.json(); } - async getWebsiteList({ - limit, - offset, - }: LASListRequest = {}): Promise { + async getWebsiteList( + options: LASListRequest = {}, + ): Promise { + const { limit, offset } = options; const params = new URLSearchParams(); if (typeof limit === 'number') params.append('limit', limit.toString()); if (typeof offset === 'number') params.append('offset', offset.toString()); diff --git a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx index fc44397330..4daeb5177c 100644 --- a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx +++ b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx @@ -27,8 +27,8 @@ import { StructuredMetadataTable, } from '@backstage/core-components'; -const LighthouseCategoryScoreStatus = ({ score }: { score: number }) => { - const scoreAsPercentage = Math.round(score * 100); +const LighthouseCategoryScoreStatus = (props: { score: number }) => { + const scoreAsPercentage = Math.round(props.score * 100); switch (true) { case scoreAsPercentage >= 90: return ( @@ -56,20 +56,15 @@ const LighthouseCategoryScoreStatus = ({ score }: { score: number }) => { } }; -const LighthouseAuditStatus = ({ audit }: { audit: Audit }) => ( +const LighthouseAuditStatus = (props: { audit: Audit }) => ( <> - - {audit.status.toLocaleUpperCase('en-US')} + + {props.audit.status.toLocaleUpperCase('en-US')} ); -const LighthouseAuditSummary = ({ - audit, - dense = false, -}: { - audit: Audit; - dense?: boolean; -}) => { +const LighthouseAuditSummary = (props: { audit: Audit; dense?: boolean }) => { + const { audit, dense = false } = props; const { url } = audit; const flattenedCategoryData: Record = {}; if (audit.status === 'COMPLETED') { @@ -92,13 +87,12 @@ const LighthouseAuditSummary = ({ return ; }; -export const LastLighthouseAuditCard = ({ - dense = false, - variant, -}: { +/** @public */ +export const LastLighthouseAuditCard = (props: { dense?: boolean; variant?: InfoCardVariants; }) => { + const { dense = false, variant } = props; const { value: website, loading, error } = useWebsiteForEntity(); let content; diff --git a/plugins/lighthouse/src/plugin.ts b/plugins/lighthouse/src/plugin.ts index 1c9bc295f8..24052f7771 100644 --- a/plugins/lighthouse/src/plugin.ts +++ b/plugins/lighthouse/src/plugin.ts @@ -40,6 +40,7 @@ export const entityContentRouteRef = createRouteRef({ id: 'lighthouse:entity-content', }); +/** @public */ export const lighthousePlugin = createPlugin({ id: 'lighthouse', apis: [ @@ -55,6 +56,7 @@ export const lighthousePlugin = createPlugin({ }, }); +/** @public */ export const LighthousePage = lighthousePlugin.provide( createRoutableExtension({ name: 'LighthousePage', @@ -63,6 +65,7 @@ export const LighthousePage = lighthousePlugin.provide( }), ); +/** @public */ export const EntityLighthouseContent = lighthousePlugin.provide( createRoutableExtension({ name: 'EntityLighthouseContent', @@ -71,6 +74,7 @@ export const EntityLighthouseContent = lighthousePlugin.provide( }), ); +/** @public */ export const EntityLastLighthouseAuditCard = lighthousePlugin.provide( createComponentExtension({ name: 'EntityLastLighthouseAuditCard', diff --git a/plugins/proxy-backend/api-report.md b/plugins/proxy-backend/api-report.md index 45ef63f4d9..b6497adbaf 100644 --- a/plugins/proxy-backend/api-report.md +++ b/plugins/proxy-backend/api-report.md @@ -8,9 +8,18 @@ import express from 'express'; import { Logger } from 'winston'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; -// Warning: (ae-forgotten-export) The symbol "RouterOptions" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; + +// @public (undocumented) +export interface RouterOptions { + // (undocumented) + config: Config; + // (undocumented) + discovery: PluginEndpointDiscovery; + // (undocumented) + logger: Logger; + // (undocumented) + skipInvalidProxies?: boolean; +} ``` diff --git a/plugins/proxy-backend/src/service/index.ts b/plugins/proxy-backend/src/service/index.ts index d87e53b5c1..31d50951fd 100644 --- a/plugins/proxy-backend/src/service/index.ts +++ b/plugins/proxy-backend/src/service/index.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +export type { RouterOptions } from './router'; export { createRouter } from './router'; diff --git a/plugins/proxy-backend/src/service/router.ts b/plugins/proxy-backend/src/service/router.ts index e0910da145..b7ee7014bc 100644 --- a/plugins/proxy-backend/src/service/router.ts +++ b/plugins/proxy-backend/src/service/router.ts @@ -47,6 +47,7 @@ const safeForwardHeaders = [ 'user-agent', ]; +/** @public */ export interface RouterOptions { logger: Logger; config: Config; @@ -177,6 +178,7 @@ export function buildMiddleware( return createProxyMiddleware(filter, fullConfig); } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 32b27e06ca..f047c08873 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -236,15 +236,11 @@ const ALLOW_WARNINGS = [ 'plugins/ilert', 'plugins/jenkins', 'plugins/jenkins-backend', - 'plugins/kafka', - 'plugins/kafka-backend', 'plugins/kubernetes', 'plugins/kubernetes-common', - 'plugins/lighthouse', 'plugins/newrelic', 'plugins/newrelic-dashboard', 'plugins/pagerduty', - 'plugins/proxy-backend', 'plugins/rollbar', 'plugins/rollbar-backend', 'plugins/search-backend-module-pg', From d326058eb9676c869f7679ea06b46d871412a364 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 29 Jul 2022 15:21:13 +0200 Subject: [PATCH 100/275] chore: added a simple case for async validation and testing delay with a component Signed-off-by: blam --- packages/app/src/App.tsx | 7 ++-- .../scaffolder/customScaffolderExtensions.tsx | 34 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index 3f748813f5..a0390d96e8 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -91,7 +91,10 @@ import { apis } from './apis'; import { entityPage } from './components/catalog/EntityPage'; import { homePage } from './components/home/HomePage'; import { Root } from './components/Root'; -import { LowerCaseValuePickerFieldExtension } from './components/scaffolder/customScaffolderExtensions'; +import { + DelayingComponentFieldExtension, + LowerCaseValuePickerFieldExtension, +} from './components/scaffolder/customScaffolderExtensions'; import { defaultPreviewTemplate } from './components/scaffolder/defaultPreviewTemplate'; import { searchPage } from './components/search/SearchPage'; import { providers } from './identityProviders'; @@ -228,7 +231,7 @@ const routes = ( } > - + } /> diff --git a/packages/app/src/components/scaffolder/customScaffolderExtensions.tsx b/packages/app/src/components/scaffolder/customScaffolderExtensions.tsx index 61407e2918..2a4dedf080 100644 --- a/packages/app/src/components/scaffolder/customScaffolderExtensions.tsx +++ b/packages/app/src/components/scaffolder/customScaffolderExtensions.tsx @@ -62,3 +62,37 @@ export const LowerCaseValuePickerFieldExtension = scaffolderPlugin.provide( }, }), ); + +const MockDelayComponent = ( + props: FieldExtensionComponentProps<{ test?: string }>, +) => { + const { onChange, formData, rawErrors } = props; + return ( + onChange({ test: value })} + margin="normal" + error={rawErrors?.length > 0 && !formData} + /> + ); +}; + +export const DelayingComponentFieldExtension = scaffolderPlugin.provide( + createScaffolderFieldExtension({ + name: 'DelayingComponent', + component: MockDelayComponent, + validation: async ( + value: { test?: string }, + validation: FieldValidation, + ) => { + // delay 2 seconds + await new Promise(resolve => setTimeout(resolve, 2000)); + + if (value.test !== 'pass') { + validation.addError('value was not equal to pass'); + } + }, + }), +); From 6c8c1a41402caa8aa500b29ec4ac9e3acad2dcf7 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 29 Jul 2022 15:22:11 +0200 Subject: [PATCH 101/275] chore: starting to add async validation to the next scaffolder Signed-off-by: blam --- plugins/scaffolder/src/extensions/types.ts | 2 +- .../TemplateWizardPage/Stepper/Stepper.tsx | 27 +++++- .../Stepper/createAsyncValidators.ts | 83 +++++++++++++++++++ .../Stepper/useTemplateSchema.ts | 3 + 4 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts diff --git a/plugins/scaffolder/src/extensions/types.ts b/plugins/scaffolder/src/extensions/types.ts index be8dc14b0a..9b42ba478b 100644 --- a/plugins/scaffolder/src/extensions/types.ts +++ b/plugins/scaffolder/src/extensions/types.ts @@ -25,7 +25,7 @@ export type CustomFieldValidator = ( data: TFieldReturnValue, field: FieldValidation, context: { apiHolder: ApiHolder }, -) => void; +) => void | Promise; /** * Type for the Custom Field Extension with the diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index 19335d4993..240139ae5c 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { useApiHolder } from '@backstage/core-plugin-api'; import { JsonObject } from '@backstage/types'; import { Stepper as MuiStepper, @@ -21,11 +22,12 @@ import { Button, makeStyles, } from '@material-ui/core'; -import { withTheme } from '@rjsf/core'; +import { FieldValidation, FormValidation, withTheme } from '@rjsf/core'; import { Theme as MuiTheme } from '@rjsf/material-ui'; import React, { useMemo, useState } from 'react'; import { FieldExtensionOptions } from '../../../extensions'; import { TemplateParameterSchema } from '../../../types'; +import { createAsyncValidator } from './createAsyncValidators'; import { useTemplateSchema } from './useTemplateSchema'; const useStyles = makeStyles(theme => ({ @@ -51,6 +53,7 @@ const Form = withTheme(MuiTheme); export const Stepper = (props: StepperProps) => { const { steps } = useTemplateSchema(props.manifest); + const apiHolder = useApiHolder(); const [activeStep, setActiveStep] = useState(0); const [formState, setFormState] = useState({}); const styles = useStyles(); @@ -61,11 +64,31 @@ export const Stepper = (props: StepperProps) => { ); }, [props.extensions]); + const validators = useMemo(() => { + return Object.fromEntries( + props.extensions.map(({ name, validation }) => [name, validation]), + ); + }, [props.extensions]); + + const validator = useMemo(() => { + return createAsyncValidator(steps[activeStep].originalSchema, validators, { + apiHolder, + }); + }, [steps, activeStep, validators, apiHolder]); + const handleBack = () => { setActiveStep(prevActiveStep => prevActiveStep - 1); }; - const handleNext = ({ formData }: { formData: JsonObject }) => { + const handleNext = async ({ formData }: { formData: JsonObject }) => { + console.log('running validation'); + + const errors = await validator(formData, { + addError: () => {}, + __errors: [], + } as any); + + console.log('errors'); setActiveStep(prevActiveStep => prevActiveStep + 1); setFormState(current => ({ ...current, ...formData })); }; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts new file mode 100644 index 0000000000..613deb57b3 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts @@ -0,0 +1,83 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { FormValidation } from '@rjsf/core'; +import { JsonObject, JsonValue } from '@backstage/types'; +import { ApiHolder } from '@backstage/core-plugin-api'; +import { CustomFieldValidator } from '../../../extensions'; + +function isObject(obj: unknown): obj is JsonObject { + return typeof obj === 'object' && obj !== null && !Array.isArray(obj); +} + +export const createAsyncValidator = ( + rootSchema: JsonObject, + validators: Record>, + context: { + apiHolder: ApiHolder; + }, +) => { + async function validate( + schema: JsonObject, + formData: JsonObject, + errors: FormValidation, + ) { + const schemaProps = schema.properties; + const customObject = schema.type === 'object' && schemaProps === undefined; + + if (!isObject(schemaProps) && !customObject) { + return; + } + + if (schemaProps) { + for (const [key, propData] of Object.entries(formData)) { + const propValidation = errors[key]; + + if (isObject(propData)) { + const propSchemaProps = schemaProps[key]; + if (isObject(propSchemaProps)) { + await validate( + propSchemaProps, + propData as JsonObject, + propValidation as FormValidation, + ); + } + } else { + const propSchema = schemaProps[key]; + const fieldName = + isObject(propSchema) && (propSchema['ui:field'] as string); + if (fieldName && typeof validators[fieldName] === 'function') { + await validators[fieldName]!( + propData as JsonValue, + propValidation, + context, + ); + } + } + } + } else if (customObject) { + const fieldName = schema['ui:field'] as string; + if (fieldName && typeof validators[fieldName] === 'function') { + await validators[fieldName]!(formData, errors, context); + } + } + } + + return async (formData: JsonObject, errors: FormValidation) => { + await validate(rootSchema, formData, errors); + return errors; + }; +}; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts index d5fe244a25..dac2c7b61c 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts @@ -24,6 +24,7 @@ export const useTemplateSchema = ( ): { steps: { uiSchema: UiSchema; + originalSchema: JsonObject; schema: JsonObject; title: string; description?: string; @@ -33,6 +34,7 @@ export const useTemplateSchema = ( const steps = manifest.steps.map(({ title, description, schema }) => ({ title, description, + originalSchema: schema, ...extractSchemaFromStep(schema), })); @@ -45,6 +47,7 @@ export const useTemplateSchema = ( // Then filter out the properties that are not enabled with feature flag .map(step => ({ ...step, + schema: { ...step.schema, // Title is rendered at the top of the page, so let's ignore this from jsonschemaform From 7b186350d893e848a99379d097f16fc67fa7cdc2 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 2 Aug 2022 15:58:44 +0200 Subject: [PATCH 102/275] chore: rendering the errors for the async validation Signed-off-by: blam --- .../TemplateWizardPage/Stepper/Stepper.tsx | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index 240139ae5c..bb37e3143c 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -22,7 +22,7 @@ import { Button, makeStyles, } from '@material-ui/core'; -import { FieldValidation, FormValidation, withTheme } from '@rjsf/core'; +import { FormValidation, withTheme } from '@rjsf/core'; import { Theme as MuiTheme } from '@rjsf/material-ui'; import React, { useMemo, useState } from 'react'; import { FieldExtensionOptions } from '../../../extensions'; @@ -56,6 +56,7 @@ export const Stepper = (props: StepperProps) => { const apiHolder = useApiHolder(); const [activeStep, setActiveStep] = useState(0); const [formState, setFormState] = useState({}); + const [errors, setErrors] = useState(); const styles = useStyles(); const extensions = useMemo(() => { @@ -81,15 +82,37 @@ export const Stepper = (props: StepperProps) => { }; const handleNext = async ({ formData }: { formData: JsonObject }) => { - console.log('running validation'); + setErrors(undefined); - const errors = await validator(formData, { - addError: () => {}, - __errors: [], - } as any); + const errorContext: any = {}; + for (const [key] of Object.entries(formData)) { + const localFieldContext = { + __errors: [] as string[], + addError: (message: string) => { + localFieldContext.__errors.push(message); + }, + }; + errorContext[key] = localFieldContext; + } - console.log('errors'); - setActiveStep(prevActiveStep => prevActiveStep + 1); + const returnedValidation = await validator( + formData, + errorContext as FormValidation, + ); + + const hasErrors = Object.values(returnedValidation).some(i => { + if ('__errors' in i) { + return i.__errors.length > 0; + } + return false; + }); + + if (hasErrors) { + setErrors(returnedValidation); + } else { + setErrors(undefined); + setActiveStep(prevActiveStep => prevActiveStep + 1); + } setFormState(current => ({ ...current, ...formData })); }; @@ -104,6 +127,7 @@ export const Stepper = (props: StepperProps) => {
    Date: Thu, 18 Aug 2022 15:53:21 +0200 Subject: [PATCH 103/275] Update happy-kiwis-look.md Signed-off-by: Ben Lambert --- .changeset/happy-kiwis-look.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/happy-kiwis-look.md b/.changeset/happy-kiwis-look.md index c7c82954ee..ff0da8943b 100644 --- a/.changeset/happy-kiwis-look.md +++ b/.changeset/happy-kiwis-look.md @@ -2,4 +2,4 @@ '@backstage/create-app': patch --- -Fix typo +Fix typo in the documentation From d1200316767c8c69b18077ccbbf6e61f48f93233 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 3 Aug 2022 14:56:39 +0200 Subject: [PATCH 104/275] chore: added a library to work with the json schema form and make it easier to take into account all the different versions of jsonschema Signed-off-by: blam --- plugins/scaffolder/package.json | 1 + .../Stepper/createAsyncValidators.test.ts | 154 ++++++++++++++++++ .../Stepper/createAsyncValidators.ts | 71 +++----- yarn.lock | 40 +++++ 4 files changed, 221 insertions(+), 45 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 626a20d73e..52be3be8a4 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -65,6 +65,7 @@ "humanize-duration": "^3.25.1", "immer": "^9.0.1", "json-schema": "^0.4.0", + "json-schema-library": "^6.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "qs": "^6.9.4", diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts new file mode 100644 index 0000000000..f101ecf0f0 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts @@ -0,0 +1,154 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { JsonObject } from '@backstage/types'; +import { CustomFieldValidator } from '../../../extensions'; +import { createAsyncValidator } from './createAsyncValidators'; + +describe('createAsyncValidators', () => { + it('should call the correct functions for validation', async () => { + const schema: JsonObject = { + type: 'object', + properties: { + name: { + type: 'string', + 'ui:field': 'NameField', + }, + address: { + type: 'object', + 'ui:field': 'AddressField', + properties: { + street: { + type: 'string', + }, + postcode: { + type: 'string', + }, + }, + }, + }, + }; + + const validators = { NameField: jest.fn(), AddressField: jest.fn() }; + + const validate = createAsyncValidator(schema, validators, { + apiHolder: { get: jest.fn() }, + }); + + await validate({ + name: 'asd', + address: { street: 'street', postcode: 'postcode' }, + }); + + expect(validators.NameField).toHaveBeenCalled(); + expect(validators.AddressField).toHaveBeenCalled(); + }); + + it('should return the correct errors to the frontend', async () => { + const schema: JsonObject = { + type: 'object', + properties: { + name: { + type: 'string', + 'ui:field': 'NameField', + }, + address: { + type: 'object', + 'ui:field': 'AddressField', + properties: { + street: { + type: 'string', + }, + postcode: { + type: 'string', + }, + }, + }, + }, + }; + + const NameField: CustomFieldValidator = (value, { addError }) => { + if (!value) { + addError('something is broken here!'); + } + }; + + const AddressField: CustomFieldValidator<{ + street?: string; + postcode?: string; + }> = (value, { addError }) => { + if (!value.postcode) { + addError('postcode is missing!'); + } + + if (!value.street) { + addError('street is missing here!'); + } + }; + + const validate = createAsyncValidator( + schema, + { + NameField: NameField as CustomFieldValidator, + AddressField: AddressField as CustomFieldValidator, + }, + { + apiHolder: { get: jest.fn() }, + }, + ); + + await expect( + validate({ + name: 'asd', + address: { street: 'street', postcode: 'postcode' }, + }), + ).resolves.toEqual({ + name: expect.objectContaining({ + __errors: [], + }), + address: expect.objectContaining({ + __errors: [], + }), + }); + + await expect( + validate({ + name: 'asd', + address: { street: '', postcode: 'postcode' }, + }), + ).resolves.toEqual({ + name: expect.objectContaining({ + __errors: [], + }), + address: expect.objectContaining({ + __errors: ['street is missing here!'], + }), + }); + + await expect( + validate({ + name: '', + address: { street: '', postcode: '' }, + }), + ).resolves.toEqual({ + name: expect.objectContaining({ + __errors: ['something is broken here!'], + }), + address: expect.objectContaining({ + __errors: ['postcode is missing!', 'street is missing here!'], + }), + }); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts index 613deb57b3..26a51bf376 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts @@ -14,10 +14,11 @@ * limitations under the License. */ -import { FormValidation } from '@rjsf/core'; -import { JsonObject, JsonValue } from '@backstage/types'; +import { FieldValidation, FormValidation } from '@rjsf/core'; +import { JsonObject } from '@backstage/types'; import { ApiHolder } from '@backstage/core-plugin-api'; import { CustomFieldValidator } from '../../../extensions'; +import { Draft07 as JSONSchema } from 'json-schema-library'; function isObject(obj: unknown): obj is JsonObject { return typeof obj === 'object' && obj !== null && !Array.isArray(obj); @@ -30,54 +31,34 @@ export const createAsyncValidator = ( apiHolder: ApiHolder; }, ) => { - async function validate( - schema: JsonObject, - formData: JsonObject, - errors: FormValidation, - ) { - const schemaProps = schema.properties; - const customObject = schema.type === 'object' && schemaProps === undefined; + async function validate(formData: JsonObject, pathPrefix: string = '#') { + const parsedSchema = new JSONSchema(rootSchema); + const formValidation: Record = {}; + for (const [key, value] of Object.entries(formData)) { + const definitionInSchema = parsedSchema.getSchema( + `${pathPrefix}/${key}`, + formData, + ); - if (!isObject(schemaProps) && !customObject) { - return; - } - - if (schemaProps) { - for (const [key, propData] of Object.entries(formData)) { - const propValidation = errors[key]; - - if (isObject(propData)) { - const propSchemaProps = schemaProps[key]; - if (isObject(propSchemaProps)) { - await validate( - propSchemaProps, - propData as JsonObject, - propValidation as FormValidation, - ); - } - } else { - const propSchema = schemaProps[key]; - const fieldName = - isObject(propSchema) && (propSchema['ui:field'] as string); - if (fieldName && typeof validators[fieldName] === 'function') { - await validators[fieldName]!( - propData as JsonValue, - propValidation, - context, - ); - } + if (definitionInSchema && 'ui:field' in definitionInSchema) { + const validator = validators[definitionInSchema['ui:field']]; + if (validator) { + const fieldValidation = { + __errors: [] as string[], + addError: (message: string) => { + fieldValidation.__errors.push(message); + }, + }; + await validator(value, fieldValidation, context); + formValidation[key] = fieldValidation; } } - } else if (customObject) { - const fieldName = schema['ui:field'] as string; - if (fieldName && typeof validators[fieldName] === 'function') { - await validators[fieldName]!(formData, errors, context); - } } + + return formValidation; } - return async (formData: JsonObject, errors: FormValidation) => { - await validate(rootSchema, formData, errors); - return errors; + return async (formData: JsonObject) => { + return await validate(formData); }; }; diff --git a/yarn.lock b/yarn.lock index e697cffa41..b95e1bfe8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12254,6 +12254,11 @@ easy-table@1.1.0: optionalDependencies: wcwidth ">=1.0.1" +ebnf@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/ebnf/-/ebnf-1.9.0.tgz#9c2dd6052f3ed43a69c1f0b07b15bd03cefda764" + integrity sha512-LKK899+j758AgPq00ms+y90mo+2P86fMKUWD28sH0zLKUj7aL6iIH2wy4jejAMM9I2BawJ+2kp6C3mMXj+Ii5g== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -14651,6 +14656,25 @@ grpc-docs@^1.0.6, grpc-docs@^1.1.2: rollup-plugin-smart-asset "^2.1.2" styled-components "^5.3.3" +gson-conform@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/gson-conform/-/gson-conform-1.0.3.tgz#6f982f98ea84199280bd48b6bfbcd0ae7447f1e2" + integrity sha512-gaZQN/5ZbohkLBOs4JKHkg/IdOB9kuuEr5SVLAjHUs+Q+Nl746DRe18GgQy4oxxVXStO//Zga2wg4eWL9Mfshw== + +gson-pointer@4.1.1, gson-pointer@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/gson-pointer/-/gson-pointer-4.1.1.tgz#088d6aa38d52753530288d13b5a75b6a43170e9b" + integrity sha512-rOS/zCLUI8BT0+/U+p5nzI0RfhIyRmzkpwzyCj8gcLoRl3rHuysk6ci1IQ955AQQZDSNN3mVec26Sx9wRZ0EjA== + +gson-query@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/gson-query/-/gson-query-5.1.0.tgz#8f34a062849f8c08be0c35eddaa2ad18a4326a49" + integrity sha512-xKb/90XfmLLKGgX8Y7LRF4yKnMR/ckV5WOQ/Ip0pRXuDh7jUhdY1UYjPvQnF7/UMbNsAo0168j2j0yt9+4QdaA== + dependencies: + ebnf "^1.9.0" + gson-conform "^1.0.3" + gson-pointer "4.1.1" + gtoken@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/gtoken/-/gtoken-6.0.1.tgz#1276371d51e93c4eface76e3f30f9e8f1cad3f1a" @@ -16989,6 +17013,17 @@ json-schema-compare@^0.2.2: dependencies: lodash "^4.17.4" +json-schema-library@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/json-schema-library/-/json-schema-library-6.0.0.tgz#2a823d850031842c6917f41a8c576af3b603ab48" + integrity sha512-1nTpSmyfmgJpaNPIBO1SnHpXiMUh76hZnqSuCrJr7Lcu2N2SB55UPgf5F790r4dy4i4o/Moaw7OdqDhEmxP/Rw== + dependencies: + deepmerge "^4.2.2" + fast-deep-equal "^3.1.3" + gson-pointer "^4.1.1" + gson-query "^5.1.0" + valid-url "^1.0.9" + json-schema-merge-allof@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz#64d48820fec26b228db837475ce3338936bf59a5" @@ -25926,6 +25961,11 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" +valid-url@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" From bc6a0c248a5191a75450a4ce3753b750a2ed3598 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Aug 2022 15:46:33 +0200 Subject: [PATCH 105/275] chore: fixing typescript Signed-off-by: blam --- .../TemplateWizardPage/Stepper/Stepper.tsx | 28 +++++++------------ .../Stepper/createAsyncValidators.ts | 14 ++-------- .../next/TemplateWizardPage/Stepper/schema.ts | 18 +++++++++++- .../Stepper/useTemplateSchema.ts | 4 +-- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index bb37e3143c..013147dc90 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -22,12 +22,13 @@ import { Button, makeStyles, } from '@material-ui/core'; -import { FormValidation, withTheme } from '@rjsf/core'; +import { FieldValidation, withTheme } from '@rjsf/core'; import { Theme as MuiTheme } from '@rjsf/material-ui'; import React, { useMemo, useState } from 'react'; import { FieldExtensionOptions } from '../../../extensions'; import { TemplateParameterSchema } from '../../../types'; import { createAsyncValidator } from './createAsyncValidators'; +import { createFieldValidation } from './schema'; import { useTemplateSchema } from './useTemplateSchema'; const useStyles = makeStyles(theme => ({ @@ -56,7 +57,9 @@ export const Stepper = (props: StepperProps) => { const apiHolder = useApiHolder(); const [activeStep, setActiveStep] = useState(0); const [formState, setFormState] = useState({}); - const [errors, setErrors] = useState(); + const [errors, setErrors] = useState< + undefined | Record + >(); const styles = useStyles(); const extensions = useMemo(() => { @@ -72,7 +75,8 @@ export const Stepper = (props: StepperProps) => { }, [props.extensions]); const validator = useMemo(() => { - return createAsyncValidator(steps[activeStep].originalSchema, validators, { + const { mergedSchema } = steps[activeStep]; + return createAsyncValidator(mergedSchema, validators, { apiHolder, }); }, [steps, activeStep, validators, apiHolder]); @@ -86,25 +90,13 @@ export const Stepper = (props: StepperProps) => { const errorContext: any = {}; for (const [key] of Object.entries(formData)) { - const localFieldContext = { - __errors: [] as string[], - addError: (message: string) => { - localFieldContext.__errors.push(message); - }, - }; - errorContext[key] = localFieldContext; + errorContext[key] = createFieldValidation(); } - const returnedValidation = await validator( - formData, - errorContext as FormValidation, - ); + const returnedValidation = await validator(formData); const hasErrors = Object.values(returnedValidation).some(i => { - if ('__errors' in i) { - return i.__errors.length > 0; - } - return false; + return i.__errors.length > 0; }); if (hasErrors) { diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts index 26a51bf376..e2f625892a 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts @@ -14,15 +14,12 @@ * limitations under the License. */ -import { FieldValidation, FormValidation } from '@rjsf/core'; +import { FieldValidation } from '@rjsf/core'; import { JsonObject } from '@backstage/types'; import { ApiHolder } from '@backstage/core-plugin-api'; import { CustomFieldValidator } from '../../../extensions'; import { Draft07 as JSONSchema } from 'json-schema-library'; - -function isObject(obj: unknown): obj is JsonObject { - return typeof obj === 'object' && obj !== null && !Array.isArray(obj); -} +import { createFieldValidation } from './schema'; export const createAsyncValidator = ( rootSchema: JsonObject, @@ -43,12 +40,7 @@ export const createAsyncValidator = ( if (definitionInSchema && 'ui:field' in definitionInSchema) { const validator = validators[definitionInSchema['ui:field']]; if (validator) { - const fieldValidation = { - __errors: [] as string[], - addError: (message: string) => { - fieldValidation.__errors.push(message); - }, - }; + const fieldValidation = createFieldValidation(); await validator(value, fieldValidation, context); formValidation[key] = fieldValidation; } diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts index 5a33a622bb..d353820004 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { JsonObject } from '@backstage/types'; -import { UiSchema } from '@rjsf/core'; +import { FieldValidation, UiSchema } from '@rjsf/core'; function isObject(value: unknown): value is JsonObject { return typeof value === 'object' && value !== null && !Array.isArray(value); @@ -110,3 +110,19 @@ export const extractSchemaFromStep = ( extractUiSchema(returnSchema, uiSchema); return { uiSchema, schema: returnSchema }; }; + +/** + * @alpha + * Creates a field validation object for use in react jsonschema form + * @returns {FieldValidation} A field validation object that can be used to validate a field + */ +export const createFieldValidation = (): FieldValidation => { + const fieldValidation: FieldValidation = { + __errors: [] as string[], + addError: (message: string) => { + fieldValidation.__errors.push(message); + }, + }; + + return fieldValidation; +}; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts index dac2c7b61c..926fb8d56e 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts @@ -24,7 +24,7 @@ export const useTemplateSchema = ( ): { steps: { uiSchema: UiSchema; - originalSchema: JsonObject; + mergedSchema: JsonObject; schema: JsonObject; title: string; description?: string; @@ -34,7 +34,7 @@ export const useTemplateSchema = ( const steps = manifest.steps.map(({ title, description, schema }) => ({ title, description, - originalSchema: schema, + mergedSchema: schema, ...extractSchemaFromStep(schema), })); From ba2e4337d1a2e39424fc2e3896997448302cd944 Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 12:09:11 -0300 Subject: [PATCH 106/275] fix(tech-insights-backend): Allow it to skip migrations Signed-off-by: Daniel Dias Branco Arthaud --- .../persistence/TechInsightsDatabase.test.ts | 17 ++++++++++++-- .../service/persistence/persistenceContext.ts | 22 +++++++++++++------ .../src/service/techInsightsContextBuilder.ts | 7 +++--- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts index e7e8819c66..3cf6d08c65 100644 --- a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts +++ b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts @@ -15,7 +15,7 @@ */ import { DateTime, Duration } from 'luxon'; import { TechInsightsStore } from '@backstage/plugin-tech-insights-node'; -import { Knex } from 'knex'; +import { Knex as KnexType, Knex } from 'knex'; import { TestDatabases } from '@backstage/backend-test-utils'; import { getVoidLogger } from '@backstage/backend-common'; import { initializePersistenceContext } from './persistenceContext'; @@ -165,15 +165,28 @@ const multipleSameFacts = [ }, ]; +function createDatabaseManager( + client: KnexType, + skipMigrations: boolean = false, +) { + return { + getClient: async () => client, + migrations: { + skip: skipMigrations, + }, + }; +} + describe('Tech Insights database', () => { const databases = TestDatabases.create(); let store: TechInsightsStore; let testDbClient: Knex; beforeAll(async () => { testDbClient = await databases.init('SQLITE_3'); + const database = createDatabaseManager(testDbClient); store = ( - await initializePersistenceContext(testDbClient, { + await initializePersistenceContext(database, { logger: getVoidLogger(), }) ).techInsightsStore; diff --git a/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts b/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts index b0fb65349f..575ee67bdf 100644 --- a/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts +++ b/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts @@ -13,8 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger, resolvePackagePath } from '@backstage/backend-common'; -import { Knex } from 'knex'; +import { + getVoidLogger, + PluginDatabaseManager, + resolvePackagePath, +} from '@backstage/backend-common'; import { Logger } from 'winston'; import { TechInsightsDatabase } from './TechInsightsDatabase'; import { TechInsightsStore } from '@backstage/plugin-tech-insights-node'; @@ -47,13 +50,18 @@ const defaultOptions: CreateDatabaseOptions = { * @public */ export const initializePersistenceContext = async ( - knex: Knex, + database: PluginDatabaseManager, options: CreateDatabaseOptions = defaultOptions, ): Promise => { - await knex.migrate.latest({ - directory: migrationsDir, - }); + const client = await database.getClient(); + + if (!database.migrations?.skip) { + await client.migrate.latest({ + directory: migrationsDir, + }); + } + return { - techInsightsStore: new TechInsightsDatabase(knex, options.logger), + techInsightsStore: new TechInsightsDatabase(client, options.logger), }; }; diff --git a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts index 008acf192d..9c54036020 100644 --- a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts +++ b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts @@ -135,10 +135,9 @@ export const buildTechInsightsContext = async < const factRetrieverRegistry = buildFactRetrieverRegistry(); - const persistenceContext = await initializePersistenceContext( - await database.getClient(), - { logger }, - ); + const persistenceContext = await initializePersistenceContext(database, { + logger, + }); const factRetrieverEngine = await FactRetrieverEngine.create({ scheduler, From 332d6bff46973dee58f836907a15cf065798aa59 Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 14:37:58 -0300 Subject: [PATCH 107/275] fix(bazaar-backend): Allow it to skip migrations Signed-off-by: Daniel Dias Branco Arthaud --- .../src/service/DatabaseHandler.test.ts | 16 +++++- .../src/service/DatabaseHandler.ts | 51 ++++++++++--------- plugins/bazaar-backend/src/service/router.ts | 3 +- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts b/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts index 3099e5bbb2..e1a722016b 100644 --- a/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts +++ b/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts @@ -16,6 +16,7 @@ import { DatabaseHandler } from './DatabaseHandler'; import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; +import { Knex as KnexType } from 'knex'; const bazaarProject: any = { name: 'n1', @@ -35,11 +36,24 @@ describe('DatabaseHandler', () => { ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], }); + function createDatabaseManager( + client: KnexType, + skipMigrations: boolean = false, + ) { + return { + getClient: async () => client, + migrations: { + skip: skipMigrations, + }, + }; + } + async function createDatabaseHandler(databaseId: TestDatabaseId) { const knex = await databases.init(databaseId); + const databaseManager = createDatabaseManager(knex); return { knex, - dbHandler: await DatabaseHandler.create({ database: knex }), + dbHandler: await DatabaseHandler.create({ database: databaseManager }), }; } diff --git a/plugins/bazaar-backend/src/service/DatabaseHandler.ts b/plugins/bazaar-backend/src/service/DatabaseHandler.ts index 7da06a54b8..d8d975b7ed 100644 --- a/plugins/bazaar-backend/src/service/DatabaseHandler.ts +++ b/plugins/bazaar-backend/src/service/DatabaseHandler.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { resolvePackagePath } from '@backstage/backend-common'; +import { + PluginDatabaseManager, + resolvePackagePath, +} from '@backstage/backend-common'; import { Knex } from 'knex'; const migrationsDir = resolvePackagePath( @@ -23,24 +26,27 @@ const migrationsDir = resolvePackagePath( ); type Options = { - database: Knex; + database: PluginDatabaseManager; }; export class DatabaseHandler { static async create(options: Options): Promise { const { database } = options; + const client = await database.getClient(); - await database.migrate.latest({ - directory: migrationsDir, - }); + if (!database.migrations?.skip) { + await client.migrate.latest({ + directory: migrationsDir, + }); + } - return new DatabaseHandler(options); + return new DatabaseHandler(client); } - private readonly database: Knex; + private readonly client: Knex; - private constructor(options: Options) { - this.database = options.database; + private constructor(client: Knex) { + this.client = client; } private columns = [ @@ -58,14 +64,11 @@ export class DatabaseHandler { ]; async getMembers(id: string) { - return await this.database - .select('*') - .from('members') - .where({ item_id: id }); + return await this.client.select('*').from('members').where({ item_id: id }); } async addMember(id: number, userId: string, picture?: string) { - await this.database + await this.client .insert({ item_id: id, user_id: userId, @@ -75,18 +78,18 @@ export class DatabaseHandler { } async deleteMember(id: number, userId: string) { - return await this.database('members') + return await this.client('members') .where({ item_id: id }) .andWhere('user_id', userId) .del(); } async getMetadataById(id: number) { - const coalesce = this.database.raw( + const coalesce = this.client.raw( 'coalesce(count(members.item_id), 0) as members_count', ); - return await this.database('metadata') + return await this.client('metadata') .select([...this.columns, coalesce]) .where({ 'metadata.id': id }) .groupBy(this.columns) @@ -94,11 +97,11 @@ export class DatabaseHandler { } async getMetadataByRef(entityRef: string) { - const coalesce = this.database.raw( + const coalesce = this.client.raw( 'coalesce(count(members.item_id), 0) as members_count', ); - return await this.database('metadata') + return await this.client('metadata') .select([...this.columns, coalesce]) .where({ 'metadata.entity_ref': entityRef }) .groupBy(this.columns) @@ -118,7 +121,7 @@ export class DatabaseHandler { responsible, } = bazaarProject; - await this.database + await this.client .insert({ name, entity_ref: entityRef, @@ -148,7 +151,7 @@ export class DatabaseHandler { responsible, } = bazaarProject; - return await this.database('metadata').where({ id: id }).update({ + return await this.client('metadata').where({ id: id }).update({ name, entity_ref: entityRef, description, @@ -163,15 +166,15 @@ export class DatabaseHandler { } async deleteMetadata(id: number) { - return await this.database('metadata').where({ id: id }).del(); + return await this.client('metadata').where({ id: id }).del(); } async getProjects() { - const coalesce = this.database.raw( + const coalesce = this.client.raw( 'coalesce(count(members.item_id), 0) as members_count', ); - return await this.database('metadata') + return await this.client('metadata') .select([...this.columns, coalesce]) .groupBy(this.columns) .leftJoin('members', 'metadata.id', '=', 'members.item_id'); diff --git a/plugins/bazaar-backend/src/service/router.ts b/plugins/bazaar-backend/src/service/router.ts index c61309d279..a5248c2949 100644 --- a/plugins/bazaar-backend/src/service/router.ts +++ b/plugins/bazaar-backend/src/service/router.ts @@ -33,9 +33,8 @@ export async function createRouter( options: RouterOptions, ): Promise { const { logger, database } = options; - const db = await database.getClient(); - const dbHandler = await DatabaseHandler.create({ database: db }); + const dbHandler = await DatabaseHandler.create({ database }); logger.info('Initializing Bazaar backend'); From 04eedfc4bf2f9550a398236783ffab9402760310 Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 15:00:36 -0300 Subject: [PATCH 108/275] fix(app-backend): Allow it to skip migrations Signed-off-by: Daniel Dias Branco Arthaud --- .../src/lib/assets/StaticAssetsStore.test.ts | 32 +++++++++++++++---- .../src/lib/assets/StaticAssetsStore.ts | 27 ++++++++++------ plugins/app-backend/src/service/router.ts | 2 +- 3 files changed, 44 insertions(+), 17 deletions(-) diff --git a/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts b/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts index 95de905e7a..3d0973e18c 100644 --- a/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts +++ b/plugins/app-backend/src/lib/assets/StaticAssetsStore.test.ts @@ -14,12 +14,25 @@ * limitations under the License. */ +import { Knex as KnexType } from 'knex'; import { getVoidLogger } from '@backstage/backend-common'; import { TestDatabases } from '@backstage/backend-test-utils'; import { StaticAssetsStore } from './StaticAssetsStore'; const logger = getVoidLogger(); +function createDatabaseManager( + client: KnexType, + skipMigrations: boolean = false, +) { + return { + getClient: async () => client, + migrations: { + skip: skipMigrations, + }, + }; +} + describe('StaticAssetsStore', () => { const databases = TestDatabases.create({ ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], @@ -28,9 +41,11 @@ describe('StaticAssetsStore', () => { it.each(databases.eachSupportedId())( 'should store and retrieve assets, %p', async databaseId => { + const client = await databases.init(databaseId); + const database = createDatabaseManager(client); const store = await StaticAssetsStore.create({ logger, - database: await databases.init(databaseId), + database, }); await store.storeAssets([ @@ -69,9 +84,11 @@ describe('StaticAssetsStore', () => { it.each(databases.eachSupportedId())( 'should update assets timestamps, but not contents, %p', async databaseId => { + const client = await databases.init(databaseId); + const database = createDatabaseManager(client); const store = await StaticAssetsStore.create({ logger, - database: await databases.init(databaseId), + database, }); await store.storeAssets([ @@ -119,7 +136,8 @@ describe('StaticAssetsStore', () => { it.each(databases.eachSupportedId())( 'should trim old assets, %p', async databaseId => { - const database = await databases.init(databaseId); + const knex = await databases.init(databaseId); + const database = createDatabaseManager(knex); const store = await StaticAssetsStore.create({ logger, database, @@ -137,12 +155,12 @@ describe('StaticAssetsStore', () => { ]); // Rewrite modified time of "old" to be 1h in the past - const updated = await database('static_assets_cache') + const updated = await knex('static_assets_cache') .where({ path: 'old' }) .update({ - last_modified_at: database.client.config.client.includes('sqlite3') - ? database.raw(`datetime('now', '-3600 seconds')`) - : database.raw(`now() + interval '-3600 seconds'`), + last_modified_at: knex.client.config.client.includes('sqlite3') + ? knex.raw(`datetime('now', '-3600 seconds')`) + : knex.raw(`now() + interval '-3600 seconds'`), }); expect(updated).toBe(1); diff --git a/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts b/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts index 70d664307e..6905d63779 100644 --- a/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts +++ b/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { resolvePackagePath } from '@backstage/backend-common'; +import { + PluginDatabaseManager, + resolvePackagePath, +} from '@backstage/backend-common'; import { Knex } from 'knex'; import { Logger } from 'winston'; import { DateTime } from 'luxon'; @@ -34,7 +37,7 @@ interface StaticAssetRow { /** @internal */ export interface StaticAssetsStoreOptions { - database: Knex; + database: PluginDatabaseManager; logger: Logger; } @@ -48,15 +51,21 @@ export class StaticAssetsStore implements StaticAssetProvider { #logger: Logger; static async create(options: StaticAssetsStoreOptions) { - await options.database.migrate.latest({ - directory: migrationsDir, - }); - return new StaticAssetsStore(options); + const { database } = options; + const client = await database.getClient(); + + if (!database.migrations?.skip) { + await client.migrate.latest({ + directory: migrationsDir, + }); + } + + return new StaticAssetsStore(client, options.logger); } - private constructor(options: StaticAssetsStoreOptions) { - this.#db = options.database; - this.#logger = options.logger; + private constructor(client: Knex, logger: Logger) { + this.#db = client; + this.#logger = logger; } /** diff --git a/plugins/app-backend/src/service/router.ts b/plugins/app-backend/src/service/router.ts index b666f323db..46ecd470da 100644 --- a/plugins/app-backend/src/service/router.ts +++ b/plugins/app-backend/src/service/router.ts @@ -130,7 +130,7 @@ export async function createRouter( if (options.database) { const store = await StaticAssetsStore.create({ logger, - database: await options.database.getClient(), + database: options.database, }); const assets = await findStaticAssets(staticDir); From 833e2e4904d0d59c6bb65e7d06048281b264d00a Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 15:49:18 -0300 Subject: [PATCH 109/275] fix(search-backend-module-pg): Allow it to skip migrations Signed-off-by: Daniel Dias Branco Arthaud --- .../search-backend-module-pg/api-report.md | 4 +++- .../src/PgSearchEngine/PgSearchEngine.ts | 4 ++-- .../database/DatabaseDocumentStore.test.ts | 21 +++++++++++++++++-- .../src/database/DatabaseDocumentStore.ts | 19 ++++++++++++----- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/plugins/search-backend-module-pg/api-report.md b/plugins/search-backend-module-pg/api-report.md index d1913a535d..33d0f4318c 100644 --- a/plugins/search-backend-module-pg/api-report.md +++ b/plugins/search-backend-module-pg/api-report.md @@ -26,7 +26,9 @@ export class DatabaseDocumentStore implements DatabaseStore { // (undocumented) completeInsert(tx: Knex.Transaction, type: string): Promise; // (undocumented) - static create(knex: Knex): Promise; + static create( + database: PluginDatabaseManager, + ): Promise; // (undocumented) getTransaction(): Promise; // (undocumented) diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts index 9da5ceec0e..cd99a8c4b1 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts @@ -115,14 +115,14 @@ export class PgSearchEngine implements SearchEngine { config: Config; }): Promise { return new PgSearchEngine( - await DatabaseDocumentStore.create(await options.database.getClient()), + await DatabaseDocumentStore.create(options.database), options.config, ); } static async fromConfig(config: Config, options: PgSearchOptions) { return new PgSearchEngine( - await DatabaseDocumentStore.create(await options.database.getClient()), + await DatabaseDocumentStore.create(options.database), config, ); } diff --git a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts index 355e41352d..59c8d85562 100644 --- a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts +++ b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts @@ -13,6 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +import { Knex as KnexType } from 'knex'; import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; import { IndexableDocument } from '@backstage/plugin-search-common'; import { PgSearchHighlightOptions } from '../PgSearchEngine'; @@ -30,6 +32,18 @@ const highlightOptions: PgSearchHighlightOptions = { fragmentDelimiter: ' ... ', }; +function createDatabaseManager( + client: KnexType, + skipMigrations: boolean = false, +) { + return { + getClient: async () => client, + migrations: { + skip: skipMigrations, + }, + }; +} + describe('DatabaseDocumentStore', () => { describe('unsupported', () => { const databases = TestDatabases.create({ @@ -51,9 +65,10 @@ describe('DatabaseDocumentStore', () => { 'should fail to create, %p', async databaseId => { const knex = await databases.init(databaseId); + const databaseManager = createDatabaseManager(knex); await expect( - async () => await DatabaseDocumentStore.create(knex), + async () => await DatabaseDocumentStore.create(databaseManager), ).rejects.toThrow(); }, 60_000, @@ -67,7 +82,9 @@ describe('DatabaseDocumentStore', () => { async function createStore(databaseId: TestDatabaseId) { const knex = await databases.init(databaseId); - const store = await DatabaseDocumentStore.create(knex); + const databaseManager = createDatabaseManager(knex); + const store = await DatabaseDocumentStore.create(databaseManager); + return { store, knex }; } diff --git a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts index 8e73c0f16f..4da3cca082 100644 --- a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts +++ b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts @@ -13,7 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { resolvePackagePath } from '@backstage/backend-common'; +import { + PluginDatabaseManager, + resolvePackagePath, +} from '@backstage/backend-common'; import { IndexableDocument } from '@backstage/plugin-search-common'; import { Knex } from 'knex'; import { @@ -30,7 +33,10 @@ const migrationsDir = resolvePackagePath( ); export class DatabaseDocumentStore implements DatabaseStore { - static async create(knex: Knex): Promise { + static async create( + database: PluginDatabaseManager, + ): Promise { + const knex = await database.getClient(); try { const majorVersion = await queryPostgresMajorVersion(knex); @@ -49,9 +55,12 @@ export class DatabaseDocumentStore implements DatabaseStore { ); } - await knex.migrate.latest({ - directory: migrationsDir, - }); + if (!database.migrations?.skip) { + await knex.migrate.latest({ + directory: migrationsDir, + }); + } + return new DatabaseDocumentStore(knex); } From f2ee2a5dbb11daebe5be36efb8edb1fdc2e0de4e Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 18:49:07 -0300 Subject: [PATCH 110/275] fix(code-coverage-backend): Allow it to skip migrations Signed-off-by: Daniel Dias Branco Arthaud --- .../src/service/CodeCoverageDatabase.test.ts | 17 ++++++++++++++-- .../src/service/CodeCoverageDatabase.ts | 20 ++++++++++++++----- .../src/service/router.ts | 4 +--- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts index 635debca02..ed913e2c79 100644 --- a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts +++ b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Knex as KnexType } from 'knex'; import { DatabaseManager } from '@backstage/backend-common'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; @@ -95,12 +96,24 @@ const coverage: Array = [ ], }, ]; - +function createDatabaseManager( + client: KnexType, + skipMigrations: boolean = false, +) { + return { + getClient: async () => client, + migrations: { + skip: skipMigrations, + }, + }; +} let database: CodeCoverageStore; describe('CodeCoverageDatabase', () => { beforeAll(async () => { const client = await db.getClient(); - database = await CodeCoverageDatabase.create(client); + const databaseManager = createDatabaseManager(client); + database = await CodeCoverageDatabase.create(databaseManager); + await database.insertCodeCoverage(coverage[0]); await database.insertCodeCoverage(coverage[1]); }); diff --git a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts index 9235f3a8fd..4cbcd76fe0 100644 --- a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts +++ b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts @@ -13,7 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { resolvePackagePath } from '@backstage/backend-common'; +import { + PluginDatabaseManager, + resolvePackagePath, +} from '@backstage/backend-common'; import { NotFoundError } from '@backstage/errors'; import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model'; import { Knex } from 'knex'; @@ -41,10 +44,17 @@ const migrationsDir = resolvePackagePath( ); export class CodeCoverageDatabase implements CodeCoverageStore { - static async create(knex: Knex): Promise { - await knex.migrate.latest({ - directory: migrationsDir, - }); + static async create( + database: PluginDatabaseManager, + ): Promise { + const knex = await database.getClient(); + + if (!database.migrations?.skip) { + await knex.migrate.latest({ + directory: migrationsDir, + }); + } + return new CodeCoverageDatabase(knex); } diff --git a/plugins/code-coverage-backend/src/service/router.ts b/plugins/code-coverage-backend/src/service/router.ts index 37279b549f..b87b21bffd 100644 --- a/plugins/code-coverage-backend/src/service/router.ts +++ b/plugins/code-coverage-backend/src/service/router.ts @@ -57,9 +57,7 @@ export const makeRouter = async ( ): Promise => { const { config, logger, discovery, database, urlReader } = options; - const codeCoverageDatabase = await CodeCoverageDatabase.create( - await database.getClient(), - ); + const codeCoverageDatabase = await CodeCoverageDatabase.create(database); const codecovUrl = await discovery.getExternalBaseUrl('code-coverage'); const catalogApi: CatalogApi = new CatalogClient({ discoveryApi: discovery }); const scm = ScmIntegrations.fromConfig(config); From 08b9631a5d13549b5323789edf800fcc3dc21141 Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 20:30:46 -0300 Subject: [PATCH 111/275] fix(scaffolder-backend): Allow it to skip migrations Signed-off-by: Daniel Dias Branco Arthaud --- plugins/scaffolder-backend/api-report.md | 2 +- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 61 ++++++++++++++++--- .../tasks/StorageTaskBroker.test.ts | 3 +- .../src/scaffolder/tasks/TaskWorker.test.ts | 2 +- .../src/service/router.test.ts | 2 +- .../scaffolder-backend/src/service/router.ts | 4 +- 6 files changed, 59 insertions(+), 15 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 96a4d7b400..497e63f888 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -504,7 +504,7 @@ export class DatabaseTaskStore implements TaskStore { // @public export type DatabaseTaskStoreOptions = { - database: Knex; + database: PluginDatabaseManager | Knex; }; // @public diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index d62e59744f..d7f105887b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -15,7 +15,10 @@ */ import { JsonObject } from '@backstage/types'; -import { resolvePackagePath } from '@backstage/backend-common'; +import { + PluginDatabaseManager, + resolvePackagePath, +} from '@backstage/backend-common'; import { ConflictError, NotFoundError } from '@backstage/errors'; import { Knex } from 'knex'; import { v4 as uuid } from 'uuid'; @@ -61,9 +64,20 @@ export type RawDbTaskEventRow = { * @public */ export type DatabaseTaskStoreOptions = { - database: Knex; + database: PluginDatabaseManager | Knex; }; +/** + * Typeguard to help DatabaseTaskStore understand when database is PluginDatabaseManager vs. when database is a Knex instance. + * + * * @public + */ +function isPluginDatabaseManager( + opt: PluginDatabaseManager | Knex, +): opt is PluginDatabaseManager { + return (opt as PluginDatabaseManager).getClient !== undefined; +} + const parseSqlDateToIsoString = (input: T): T | string => { if (typeof input === 'string') { return DateTime.fromSQL(input, { zone: 'UTC' }).toISO(); @@ -83,14 +97,45 @@ export class DatabaseTaskStore implements TaskStore { static async create( options: DatabaseTaskStoreOptions, ): Promise { - await options.database.migrate.latest({ - directory: migrationsDir, - }); - return new DatabaseTaskStore(options); + const { database } = options; + const client = await this.getClient(database); + + await this.runMigrations(database, client); + + return new DatabaseTaskStore(client); } - private constructor(options: DatabaseTaskStoreOptions) { - this.db = options.database; + private static async getClient( + database: PluginDatabaseManager | Knex, + ): Promise { + if (isPluginDatabaseManager(database)) { + return database.getClient(); + } + + return database; + } + + private static async runMigrations( + database: PluginDatabaseManager | Knex, + client: Knex, + ): Promise { + if (!isPluginDatabaseManager(database)) { + await client.migrate.latest({ + directory: migrationsDir, + }); + + return; + } + + if (!database.migrations?.skip) { + await client.migrate.latest({ + directory: migrationsDir, + }); + } + } + + private constructor(client: Knex) { + this.db = client; } async list(options: { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 2350072806..4fc142a991 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -32,8 +32,9 @@ async function createStore(): Promise { }, }), ).forPlugin('scaffolder'); + return await DatabaseTaskStore.create({ - database: await manager.getClient(), + database: manager, }); } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts index e1421486f4..ee8ae400c4 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts @@ -40,7 +40,7 @@ async function createStore(): Promise { }), ).forPlugin('scaffolder'); return await DatabaseTaskStore.create({ - database: await manager.getClient(), + database: manager, }); } diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index f769038369..e59f222e2d 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -127,7 +127,7 @@ describe('createRouter', () => { beforeEach(async () => { const logger = getVoidLogger(); const databaseTaskStore = await DatabaseTaskStore.create({ - database: await createDatabase().getClient(), + database: createDatabase(), }); taskBroker = new StorageTaskBroker(databaseTaskStore, logger); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 2a8f15d967..1c6ea39443 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -97,9 +97,7 @@ export async function createRouter( let taskBroker: TaskBroker; if (!options.taskBroker) { - const databaseTaskStore = await DatabaseTaskStore.create({ - database: await database.getClient(), - }); + const databaseTaskStore = await DatabaseTaskStore.create({ database }); taskBroker = new StorageTaskBroker(databaseTaskStore, logger); } else { taskBroker = options.taskBroker; From 02ced097051515a83dad5736e35cc4742b49c2d1 Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 20:38:36 -0300 Subject: [PATCH 112/275] fix(backend-tasks): Allow it to skip migrations Signed-off-by: Daniel Dias Branco Arthaud --- packages/backend-tasks/src/tasks/TaskScheduler.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/backend-tasks/src/tasks/TaskScheduler.ts b/packages/backend-tasks/src/tasks/TaskScheduler.ts index f1668a6691..f14fb9fc2b 100644 --- a/packages/backend-tasks/src/tasks/TaskScheduler.ts +++ b/packages/backend-tasks/src/tasks/TaskScheduler.ts @@ -58,9 +58,12 @@ export class TaskScheduler { */ forPlugin(pluginId: string): PluginTaskScheduler { const databaseFactory = once(async () => { - const knex = await this.databaseManager.forPlugin(pluginId).getClient(); + const databaseManager = this.databaseManager.forPlugin(pluginId); + const knex = await databaseManager.getClient(); - await migrateBackendTasks(knex); + if (!databaseManager.migrations?.skip) { + await migrateBackendTasks(knex); + } const janitor = new PluginTaskSchedulerJanitor({ knex, From 8872cc735d88fc1f3a5075f9e523ce42c7bddd6c Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Sun, 14 Aug 2022 20:49:53 -0300 Subject: [PATCH 113/275] Add changeset Signed-off-by: Daniel Dias Branco Arthaud --- .changeset/cold-frogs-kiss.md | 16 ++++++++++++++++ .changeset/light-beans-share.md | 16 ++++++++++++++++ .changeset/rude-books-rush.md | 9 +++++++++ 3 files changed, 41 insertions(+) create mode 100644 .changeset/cold-frogs-kiss.md create mode 100644 .changeset/light-beans-share.md create mode 100644 .changeset/rude-books-rush.md diff --git a/.changeset/cold-frogs-kiss.md b/.changeset/cold-frogs-kiss.md new file mode 100644 index 0000000000..7af9468ca1 --- /dev/null +++ b/.changeset/cold-frogs-kiss.md @@ -0,0 +1,16 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Fixed a bug in plugin-scaffolder-backend where it ignores the skip migration database options. + +To use this new implementation you need to create the instance of `DatabaseTaskStore` using the `PluginDatabaseManager` instead of `Knex`; + +``` +import { DatabaseManager, getRootLogger, loadBackendConfig } from '@backstage/backend-common'; +import { DatabaseTaskStore } from '@backstage/plugin-scaffolder-backend'; + +const config = await loadBackendConfig({ argv: process.argv, logger: getRootLogger() }); +const databaseManager = DatabaseManager.fromConfig(config, { migrations: { skip: true } }); +const databaseTaskStore = await DatabaseTaskStore.create(databaseManager); +``` diff --git a/.changeset/light-beans-share.md b/.changeset/light-beans-share.md new file mode 100644 index 0000000000..51c59ff7d0 --- /dev/null +++ b/.changeset/light-beans-share.md @@ -0,0 +1,16 @@ +--- +'@backstage/plugin-search-backend-module-pg': minor +--- + +Fixed a bug in search-backend-module-pg where it ignores the skip migration database options when using the database. + +To use this new implementation you need to create the instance of `DatabaseDocumentStore` using the `PluginDatabaseManager` instead of `Knex`; + +``` +import { DatabaseManager, getRootLogger, loadBackendConfig } from '@backstage/backend-common'; +import { DatabaseDocumentStore } from '@backstage/plugin-search-backend-module-pg'; + +const config = await loadBackendConfig({ argv: process.argv, logger: getRootLogger() }); +const databaseManager = DatabaseManager.fromConfig(config, { migrations: { skip: true } }); +const databaseDocumentStore = await DatabaseDocumentStore.create(databaseManager); +``` diff --git a/.changeset/rude-books-rush.md b/.changeset/rude-books-rush.md new file mode 100644 index 0000000000..a98e90e27e --- /dev/null +++ b/.changeset/rude-books-rush.md @@ -0,0 +1,9 @@ +--- +'@backstage/backend-tasks': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-bazaar-backend': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-tech-insights-backend': patch +--- + +Fixed a bug where the database option to skip migrations was ignored. From 3424a8075dad7569f4692c0123645e4fbf54253a Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Aug 2022 16:05:52 +0200 Subject: [PATCH 114/275] chore: added changeset Signed-off-by: blam --- .changeset/sharp-swans-suffer.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/sharp-swans-suffer.md diff --git a/.changeset/sharp-swans-suffer.md b/.changeset/sharp-swans-suffer.md new file mode 100644 index 0000000000..841d746634 --- /dev/null +++ b/.changeset/sharp-swans-suffer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Added support for `async` validation for the `next` version of the plugin From bdf812508adea8ad39d7d854a5b20ae05d212c5c Mon Sep 17 00:00:00 2001 From: John Philip Date: Thu, 18 Aug 2022 10:11:00 -0400 Subject: [PATCH 115/275] fix spelling Signed-off-by: John Philip --- .changeset/lazy-snakes-film.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/lazy-snakes-film.md b/.changeset/lazy-snakes-film.md index a21d197c51..ff4097f78f 100644 --- a/.changeset/lazy-snakes-film.md +++ b/.changeset/lazy-snakes-film.md @@ -2,4 +2,4 @@ '@backstage/core-components': minor --- -Adds code to autogenerate ids for headers parsed through the MarkdownContent component. +Adds code to generate ids for headers parsed through the MarkdownContent component. From ac43121a1ee5eed673c257d421479e3daac17f66 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Aug 2022 16:16:09 +0200 Subject: [PATCH 116/275] chore: updating api-report Signed-off-by: blam --- plugins/scaffolder/api-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index 24ff8e210d..891b76906e 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -44,7 +44,7 @@ export type CustomFieldValidator = ( context: { apiHolder: ApiHolder; }, -) => void; +) => void | Promise; // @public export const EntityNamePickerFieldExtension: FieldExtensionComponent< From ac002fe3f062ff47d0faadfc6933a18cb1fcdeb2 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Aug 2022 16:24:46 +0200 Subject: [PATCH 117/275] chore: removing the error context, this isn't used anymore Signed-off-by: blam --- .../src/next/TemplateWizardPage/Stepper/Stepper.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index 013147dc90..5178318978 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -88,11 +88,6 @@ export const Stepper = (props: StepperProps) => { const handleNext = async ({ formData }: { formData: JsonObject }) => { setErrors(undefined); - const errorContext: any = {}; - for (const [key] of Object.entries(formData)) { - errorContext[key] = createFieldValidation(); - } - const returnedValidation = await validator(formData); const hasErrors = Object.values(returnedValidation).some(i => { From 5d2b0b8fc890ade38fccd2a1ddd0940501e6cdcc Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Aug 2022 16:26:13 +0200 Subject: [PATCH 118/275] chore: remove some whitespace Signed-off-by: blam --- .../src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts index 926fb8d56e..0482d89503 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts @@ -47,7 +47,6 @@ export const useTemplateSchema = ( // Then filter out the properties that are not enabled with feature flag .map(step => ({ ...step, - schema: { ...step.schema, // Title is rendered at the top of the page, so let's ignore this from jsonschemaform From ddb0557e56d86fd4e43765b4d15bff1ac65aa733 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Aug 2022 16:47:28 +0200 Subject: [PATCH 119/275] chore: code-review comments Signed-off-by: blam --- .../src/next/TemplateWizardPage/Stepper/Stepper.tsx | 11 ++++++----- .../Stepper/createAsyncValidators.test.ts | 6 +++--- .../Stepper/createAsyncValidators.ts | 8 ++++++-- .../src/next/TemplateWizardPage/Stepper/schema.ts | 1 - 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index 5178318978..b85a1e1f5d 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -27,8 +27,7 @@ import { Theme as MuiTheme } from '@rjsf/material-ui'; import React, { useMemo, useState } from 'react'; import { FieldExtensionOptions } from '../../../extensions'; import { TemplateParameterSchema } from '../../../types'; -import { createAsyncValidator } from './createAsyncValidators'; -import { createFieldValidation } from './schema'; +import { createAsyncValidators } from './createAsyncValidators'; import { useTemplateSchema } from './useTemplateSchema'; const useStyles = makeStyles(theme => ({ @@ -74,9 +73,9 @@ export const Stepper = (props: StepperProps) => { ); }, [props.extensions]); - const validator = useMemo(() => { + const validation = useMemo(() => { const { mergedSchema } = steps[activeStep]; - return createAsyncValidator(mergedSchema, validators, { + return createAsyncValidators(mergedSchema, validators, { apiHolder, }); }, [steps, activeStep, validators, apiHolder]); @@ -86,9 +85,11 @@ export const Stepper = (props: StepperProps) => { }; const handleNext = async ({ formData }: { formData: JsonObject }) => { + // TODO(blam): What do we do about loading states, does each field extension get a chance + // to display it's own loading? Or should we grey out the entire form. setErrors(undefined); - const returnedValidation = await validator(formData); + const returnedValidation = await validation(formData); const hasErrors = Object.values(returnedValidation).some(i => { return i.__errors.length > 0; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts index f101ecf0f0..ed887fb56d 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.test.ts @@ -15,7 +15,7 @@ */ import { JsonObject } from '@backstage/types'; import { CustomFieldValidator } from '../../../extensions'; -import { createAsyncValidator } from './createAsyncValidators'; +import { createAsyncValidators } from './createAsyncValidators'; describe('createAsyncValidators', () => { it('should call the correct functions for validation', async () => { @@ -43,7 +43,7 @@ describe('createAsyncValidators', () => { const validators = { NameField: jest.fn(), AddressField: jest.fn() }; - const validate = createAsyncValidator(schema, validators, { + const validate = createAsyncValidators(schema, validators, { apiHolder: { get: jest.fn() }, }); @@ -98,7 +98,7 @@ describe('createAsyncValidators', () => { } }; - const validate = createAsyncValidator( + const validate = createAsyncValidators( schema, { NameField: NameField as CustomFieldValidator, diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts index e2f625892a..d89f0d4e5f 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/createAsyncValidators.ts @@ -21,7 +21,7 @@ import { CustomFieldValidator } from '../../../extensions'; import { Draft07 as JSONSchema } from 'json-schema-library'; import { createFieldValidation } from './schema'; -export const createAsyncValidator = ( +export const createAsyncValidators = ( rootSchema: JsonObject, validators: Record>, context: { @@ -41,7 +41,11 @@ export const createAsyncValidator = ( const validator = validators[definitionInSchema['ui:field']]; if (validator) { const fieldValidation = createFieldValidation(); - await validator(value, fieldValidation, context); + try { + await validator(value, fieldValidation, context); + } catch (ex) { + fieldValidation.addError(ex.message); + } formValidation[key] = fieldValidation; } } diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts index d353820004..e2d5e89932 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/schema.ts @@ -114,7 +114,6 @@ export const extractSchemaFromStep = ( /** * @alpha * Creates a field validation object for use in react jsonschema form - * @returns {FieldValidation} A field validation object that can be used to validate a field */ export const createFieldValidation = (): FieldValidation => { const fieldValidation: FieldValidation = { From ef9ab322dea45a93af5498f601e85817e43e153f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 18 Aug 2022 16:58:54 +0200 Subject: [PATCH 120/275] it just keeps :broom: -ing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/tough-dolphins-smile.md | 19 ++++++++ packages/catalog-client/api-report.md | 2 +- packages/catalog-client/src/CatalogClient.ts | 4 +- packages/core-plugin-api/api-report.md | 5 +-- .../src/plugin-options/usePluginOptions.tsx | 9 ++-- plugins/api-docs/api-report.md | 45 +++++-------------- .../ApiDefinitionCard/ApiDefinitionCard.tsx | 1 + .../ApiDefinitionCard/ApiDefinitionWidget.tsx | 2 + .../DefaultApiExplorerPage.tsx | 8 ++-- .../AsyncApiDefinitionWidget.tsx | 2 + .../ProvidingComponentsCard.tsx | 1 + .../GraphQlDefinitionWidget.tsx | 2 + .../GrpcApiDefinitionWidget.tsx | 2 + .../OpenApiDefinitionWidget.tsx | 2 + .../PlainApiDefinitionWidget.tsx | 2 + plugins/api-docs/src/config.ts | 2 + plugins/api-docs/src/index.ts | 1 + plugins/api-docs/src/plugin.ts | 1 + plugins/apollo-explorer/api-report.md | 6 +-- .../ApolloExplorerPage/ApolloExplorerPage.tsx | 3 +- plugins/azure-devops-backend/api-report.md | 5 +-- .../src/api/AzureDevOpsApi.ts | 6 +-- plugins/badges-backend/api-report.md | 28 ------------ plugins/badges-backend/src/badges.ts | 1 + .../lib/BadgeBuilder/DefaultBadgeBuilder.ts | 1 + .../src/lib/BadgeBuilder/types.ts | 4 ++ plugins/badges-backend/src/service/router.ts | 2 + plugins/badges-backend/src/types.ts | 7 +++ plugins/badges/api-report.md | 9 +--- .../src/components/EntityBadgesDialog.tsx | 7 ++- plugins/badges/src/plugin.ts | 2 + plugins/catalog-react/api-report.md | 24 +++------- .../src/components/EntityTable/columns.tsx | 9 ++-- plugins/circleci/api-report.md | 5 +-- plugins/circleci/src/api/CircleCIApi.ts | 3 +- plugins/cloudbuild/api-report.md | 18 ++------ .../cloudbuild/src/components/Cards/Cards.tsx | 14 ++---- .../WorkflowRunDetails/WorkflowRunDetails.tsx | 4 +- .../WorkflowRunStatus/WorkflowRunStatus.tsx | 7 +-- .../WorkflowRunsTable/WorkflowRunsTable.tsx | 4 +- .../src/components/useWorkflowRuns.ts | 3 +- plugins/kubernetes/api-report.md | 19 ++------ .../HorizontalPodAutoscalerDrawer.tsx | 9 ++-- .../HorizontalPodAutoscalers/index.ts | 1 + .../src/components/Pods/PodDrawer.tsx | 11 ++--- plugins/scaffolder-backend/api-report.md | 18 ++------ .../actions/builtin/fetch/helpers.ts | 10 ++--- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 20 ++++----- .../api-report.md | 25 +++-------- .../src/engines/ElasticSearchClientWrapper.ts | 43 +++++++++--------- plugins/sonarqube-backend/api-report.md | 18 +++----- .../src/service/sonarqubeInfoProvider.ts | 24 +++++----- plugins/techdocs/api-report.md | 6 +-- .../TechDocsReaderPageSubheader.tsx | 6 +-- scripts/api-extractor.ts | 3 -- 55 files changed, 193 insertions(+), 302 deletions(-) create mode 100644 .changeset/tough-dolphins-smile.md diff --git a/.changeset/tough-dolphins-smile.md b/.changeset/tough-dolphins-smile.md new file mode 100644 index 0000000000..bb4f0a39a8 --- /dev/null +++ b/.changeset/tough-dolphins-smile.md @@ -0,0 +1,19 @@ +--- +'@backstage/catalog-client': patch +'@backstage/core-plugin-api': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-apollo-explorer': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-search-backend-module-elasticsearch': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/plugin-techdocs': patch +--- + +Minor API signatures cleanup diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md index 5fcae87dd5..964a3c1018 100644 --- a/packages/catalog-client/api-report.md +++ b/packages/catalog-client/api-report.md @@ -78,7 +78,7 @@ export class CatalogClient implements CatalogApi { }; }); addLocation( - { type, target, dryRun }: AddLocationRequest, + request: AddLocationRequest, options?: CatalogRequestOptions, ): Promise; getEntities( diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts index 371ac55db4..8ddc3eb36d 100644 --- a/packages/catalog-client/src/CatalogClient.ts +++ b/packages/catalog-client/src/CatalogClient.ts @@ -272,9 +272,11 @@ export class CatalogClient implements CatalogApi { * {@inheritdoc CatalogApi.addLocation} */ async addLocation( - { type = 'url', target, dryRun }: AddLocationRequest, + request: AddLocationRequest, options?: CatalogRequestOptions, ): Promise { + const { type = 'url', target, dryRun } = request; + const response = await this.fetchApi.fetch( `${await this.discoveryApi.getBaseUrl('catalog')}/locations${ dryRun ? '?dryRun=true' : '' diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 87fc344a02..0738d7bac5 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -649,10 +649,7 @@ export interface PluginOptionsProviderProps { } // @alpha -export const PluginProvider: ({ - children, - plugin, -}: PluginOptionsProviderProps) => JSX.Element; +export const PluginProvider: (props: PluginOptionsProviderProps) => JSX.Element; // @public export type ProfileInfo = { diff --git a/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx b/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx index 82684636d6..4fdacc1ace 100644 --- a/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx +++ b/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx @@ -39,10 +39,11 @@ export interface PluginOptionsProviderProps { * * @alpha */ -export const PluginProvider = ({ - children, - plugin, -}: PluginOptionsProviderProps): JSX.Element => { +export const PluginProvider = ( + props: PluginOptionsProviderProps, +): JSX.Element => { + const { children, plugin } = props; + const { Provider } = createVersionedContext<{ 1: { plugin: BackstagePlugin | undefined }; }>(contextKey); diff --git a/plugins/api-docs/api-report.md b/plugins/api-docs/api-report.md index 9f226e52c7..0872d97355 100644 --- a/plugins/api-docs/api-report.md +++ b/plugins/api-docs/api-report.md @@ -17,13 +17,9 @@ import { TableColumn } from '@backstage/core-components'; import { TableProps } from '@backstage/core-components'; import { UserListFilterKind } from '@backstage/plugin-catalog-react'; -// Warning: (ae-missing-release-tag) "ApiDefinitionCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ApiDefinitionCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "ApiDefinitionWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type ApiDefinitionWidget = { type: string; @@ -32,14 +28,17 @@ export type ApiDefinitionWidget = { rawLanguage?: string; }; -// Warning: (ae-forgotten-export) The symbol "ApiDocsConfig" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "apiDocsConfigRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export interface ApiDocsConfig { + // (undocumented) + getApiDefinitionWidget: ( + apiEntity: ApiEntity, + ) => ApiDefinitionWidget | undefined; +} + // @public (undocumented) export const apiDocsConfigRef: ApiRef; -// Warning: (ae-missing-release-tag) "apiDocsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const apiDocsPlugin: BackstagePlugin< { @@ -66,15 +65,11 @@ export const ApiExplorerPage: ( // @public (undocumented) export const ApiTypeTitle: (props: { apiEntity: ApiEntity }) => JSX.Element; -// Warning: (ae-missing-release-tag) "AsyncApiDefinitionWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const AsyncApiDefinitionWidget: ( props: AsyncApiDefinitionWidgetProps, ) => JSX.Element; -// Warning: (ae-missing-release-tag) "AsyncApiDefinitionWidgetProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AsyncApiDefinitionWidgetProps = { definition: string; @@ -91,11 +86,9 @@ export const ConsumingComponentsCard: (props: { }) => JSX.Element; // @public -export const DefaultApiExplorerPage: ({ - initiallySelectedFilter, - columns, - actions, -}: DefaultApiExplorerPageProps) => JSX.Element; +export const DefaultApiExplorerPage: ( + props: DefaultApiExplorerPageProps, +) => JSX.Element; // @public export type DefaultApiExplorerPageProps = { @@ -104,8 +97,6 @@ export type DefaultApiExplorerPageProps = { actions?: TableProps['actions']; }; -// Warning: (ae-missing-release-tag) "defaultDefinitionWidgets" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function defaultDefinitionWidgets(): ApiDefinitionWidget[]; @@ -137,15 +128,11 @@ export const EntityProvidingComponentsCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "GraphQlDefinitionWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const GraphQlDefinitionWidget: ( props: GraphQlDefinitionWidgetProps, ) => JSX.Element; -// Warning: (ae-missing-release-tag) "GraphQlDefinitionWidgetProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GraphQlDefinitionWidgetProps = { definition: string; @@ -156,29 +143,21 @@ export const HasApisCard: (props: { variant?: InfoCardVariants; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "OpenApiDefinitionWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const OpenApiDefinitionWidget: ( props: OpenApiDefinitionWidgetProps, ) => JSX.Element; -// Warning: (ae-missing-release-tag) "OpenApiDefinitionWidgetProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type OpenApiDefinitionWidgetProps = { definition: string; }; -// Warning: (ae-missing-release-tag) "PlainApiDefinitionWidget" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const PlainApiDefinitionWidget: ( props: PlainApiDefinitionWidgetProps, ) => JSX.Element; -// Warning: (ae-missing-release-tag) "PlainApiDefinitionWidgetProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PlainApiDefinitionWidgetProps = { definition: any; @@ -190,8 +169,6 @@ export const ProvidedApisCard: (props: { variant?: InfoCardVariants; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "ProvidingComponentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ProvidingComponentsCard: (props: { variant?: InfoCardVariants; diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx index 353b973626..679069f209 100644 --- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx +++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx @@ -24,6 +24,7 @@ import { PlainApiDefinitionWidget } from '../PlainApiDefinitionWidget'; import { CardTab, TabbedCard } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; +/** @public */ export const ApiDefinitionCard = () => { const { entity } = useEntity(); const config = useApi(apiDocsConfigRef); diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx index 3b7aa406d4..03a56eaa78 100644 --- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx +++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx @@ -19,6 +19,7 @@ import { GraphQlDefinitionWidget } from '../GraphQlDefinitionWidget'; import { OpenApiDefinitionWidget } from '../OpenApiDefinitionWidget'; import { GrpcApiDefinitionWidget } from '../GrpcApiDefinitionWidget'; +/** @public */ export type ApiDefinitionWidget = { type: string; title: string; @@ -26,6 +27,7 @@ export type ApiDefinitionWidget = { rawLanguage?: string; }; +/** @public */ export function defaultDefinitionWidgets(): ApiDefinitionWidget[] { return [ { diff --git a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx index b0acd3567c..ad43205c5f 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx @@ -64,11 +64,9 @@ export type DefaultApiExplorerPageProps = { * DefaultApiExplorerPage * @public */ -export const DefaultApiExplorerPage = ({ - initiallySelectedFilter = 'all', - columns, - actions, -}: DefaultApiExplorerPageProps) => { +export const DefaultApiExplorerPage = (props: DefaultApiExplorerPageProps) => { + const { initiallySelectedFilter = 'all', columns, actions } = props; + const configApi = useApi(configApiRef); const generatedSubtitle = `${ configApi.getOptionalString('organization.name') ?? 'Backstage' diff --git a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx index 03bc6fa8a6..2e8710b008 100644 --- a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx +++ b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx @@ -25,10 +25,12 @@ const LazyAsyncApiDefinition = React.lazy(() => })), ); +/** @public */ export type AsyncApiDefinitionWidgetProps = { definition: string; }; +/** @public */ export const AsyncApiDefinitionWidget = ( props: AsyncApiDefinitionWidgetProps, ) => { diff --git a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx index 939257a2e5..435021e008 100644 --- a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx +++ b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx @@ -34,6 +34,7 @@ import { WarningPanel, } from '@backstage/core-components'; +/** @public */ export const ProvidingComponentsCard = (props: { variant?: InfoCardVariants; }) => { diff --git a/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx b/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx index 1f8a796249..b5cf06e828 100644 --- a/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx +++ b/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx @@ -25,10 +25,12 @@ const LazyGraphQlDefinition = React.lazy(() => })), ); +/** @public */ export type GraphQlDefinitionWidgetProps = { definition: string; }; +/** @public */ export const GraphQlDefinitionWidget = ( props: GraphQlDefinitionWidgetProps, ) => { diff --git a/plugins/api-docs/src/components/GrpcApiDefinitionWidget/GrpcApiDefinitionWidget.tsx b/plugins/api-docs/src/components/GrpcApiDefinitionWidget/GrpcApiDefinitionWidget.tsx index c5f9b071ef..b6bf317099 100644 --- a/plugins/api-docs/src/components/GrpcApiDefinitionWidget/GrpcApiDefinitionWidget.tsx +++ b/plugins/api-docs/src/components/GrpcApiDefinitionWidget/GrpcApiDefinitionWidget.tsx @@ -19,10 +19,12 @@ import { CodeSnippet } from '@backstage/core-components'; import { useTheme } from '@material-ui/core/styles'; import { BackstageTheme } from '@backstage/theme'; +/** @public */ export type GrpcApiDefinitionWidgetProps = { definition: string; }; +/** @public */ export const GrpcApiDefinitionWidget = ( props: GrpcApiDefinitionWidgetProps, ) => { diff --git a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx index 606e476454..424a52136b 100644 --- a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx +++ b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx @@ -25,10 +25,12 @@ const LazyOpenApiDefinition = React.lazy(() => })), ); +/** @public */ export type OpenApiDefinitionWidgetProps = { definition: string; }; +/** @public */ export const OpenApiDefinitionWidget = ( props: OpenApiDefinitionWidgetProps, ) => { diff --git a/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx b/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx index b7f1e8afc0..c7d7d83c8d 100644 --- a/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx +++ b/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx @@ -17,11 +17,13 @@ import React from 'react'; import { CodeSnippet } from '@backstage/core-components'; +/** @public */ export type PlainApiDefinitionWidgetProps = { definition: any; language: string; }; +/** @public */ export const PlainApiDefinitionWidget = ( props: PlainApiDefinitionWidgetProps, ) => { diff --git a/plugins/api-docs/src/config.ts b/plugins/api-docs/src/config.ts index 979340164b..4d1e650720 100644 --- a/plugins/api-docs/src/config.ts +++ b/plugins/api-docs/src/config.ts @@ -18,10 +18,12 @@ import { ApiEntity } from '@backstage/catalog-model'; import { ApiDefinitionWidget } from './components/ApiDefinitionCard/ApiDefinitionWidget'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const apiDocsConfigRef = createApiRef({ id: 'plugin.api-docs.config', }); +/** @public */ export interface ApiDocsConfig { getApiDefinitionWidget: ( apiEntity: ApiEntity, diff --git a/plugins/api-docs/src/index.ts b/plugins/api-docs/src/index.ts index fe98e9c70e..49b2805aad 100644 --- a/plugins/api-docs/src/index.ts +++ b/plugins/api-docs/src/index.ts @@ -21,6 +21,7 @@ */ export * from './components'; +export type { ApiDocsConfig } from './config'; export { apiDocsConfigRef } from './config'; export { apiDocsPlugin, diff --git a/plugins/api-docs/src/plugin.ts b/plugins/api-docs/src/plugin.ts index 2a10a3afcd..cabe2d82cd 100644 --- a/plugins/api-docs/src/plugin.ts +++ b/plugins/api-docs/src/plugin.ts @@ -25,6 +25,7 @@ import { createRoutableExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const apiDocsPlugin = createPlugin({ id: 'api-docs', routes: { diff --git a/plugins/apollo-explorer/api-report.md b/plugins/apollo-explorer/api-report.md index 80dae62e60..1d3b41eac1 100644 --- a/plugins/apollo-explorer/api-report.md +++ b/plugins/apollo-explorer/api-report.md @@ -10,11 +10,7 @@ import { JSONObject } from '@apollo/explorer/src/helpers/types'; import { RouteRef } from '@backstage/core-plugin-api'; // @public -export const ApolloExplorerPage: ({ - title, - subtitle, - endpoints, -}: { +export const ApolloExplorerPage: (props: { title?: string | undefined; subtitle?: string | undefined; endpoints: { diff --git a/plugins/apollo-explorer/src/components/ApolloExplorerPage/ApolloExplorerPage.tsx b/plugins/apollo-explorer/src/components/ApolloExplorerPage/ApolloExplorerPage.tsx index c2c02fc646..f90af9bc17 100644 --- a/plugins/apollo-explorer/src/components/ApolloExplorerPage/ApolloExplorerPage.tsx +++ b/plugins/apollo-explorer/src/components/ApolloExplorerPage/ApolloExplorerPage.tsx @@ -41,7 +41,8 @@ type Props = { endpoints: EndpointProps[]; }; -export const ApolloExplorerPage = ({ title, subtitle, endpoints }: Props) => { +export const ApolloExplorerPage = (props: Props) => { + const { title, subtitle, endpoints } = props; return (
    diff --git a/plugins/azure-devops-backend/api-report.md b/plugins/azure-devops-backend/api-report.md index 712a433920..5918195827 100644 --- a/plugins/azure-devops-backend/api-report.md +++ b/plugins/azure-devops-backend/api-report.md @@ -77,10 +77,7 @@ export class AzureDevOpsApi { top: number, ): Promise; // (undocumented) - getTeamMembers({ - projectId, - teamId, - }: { + getTeamMembers(options: { projectId: string; teamId: string; }): Promise; diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index 13edd7419d..3bffa925f5 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -296,13 +296,11 @@ export class AzureDevOpsApi { ); } - public async getTeamMembers({ - projectId, - teamId, - }: { + public async getTeamMembers(options: { projectId: string; teamId: string; }): Promise { + const { projectId, teamId } = options; this.logger?.debug(`Getting team member ids for team '${teamId}'.`); const client = await this.webApi.getCoreApi(); diff --git a/plugins/badges-backend/api-report.md b/plugins/badges-backend/api-report.md index 0660d23fdb..0ecf41ee85 100644 --- a/plugins/badges-backend/api-report.md +++ b/plugins/badges-backend/api-report.md @@ -9,8 +9,6 @@ import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; -// Warning: (ae-missing-release-tag) "Badge" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Badge { color?: string; @@ -23,8 +21,6 @@ export interface Badge { style?: BadgeStyle; } -// Warning: (ae-missing-release-tag) "BADGE_STYLES" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const BADGE_STYLES: readonly [ 'plastic', @@ -34,8 +30,6 @@ export const BADGE_STYLES: readonly [ 'social', ]; -// Warning: (ae-missing-release-tag) "BadgeBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BadgeBuilder = { getBadges(): Promise; @@ -43,8 +37,6 @@ export type BadgeBuilder = { createBadgeSvg(options: BadgeOptions): Promise; }; -// Warning: (ae-missing-release-tag) "BadgeContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface BadgeContext { // (undocumented) @@ -55,39 +47,29 @@ export interface BadgeContext { entity?: Entity; } -// Warning: (ae-missing-release-tag) "BadgeFactories" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface BadgeFactories { // (undocumented) [id: string]: BadgeFactory; } -// Warning: (ae-missing-release-tag) "BadgeFactory" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface BadgeFactory { // (undocumented) createBadge(context: BadgeContext): Badge; } -// Warning: (ae-missing-release-tag) "BadgeInfo" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BadgeInfo = { id: string; }; -// Warning: (ae-missing-release-tag) "BadgeOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BadgeOptions = { badgeInfo: BadgeInfo; context: BadgeContext; }; -// Warning: (ae-missing-release-tag) "BadgeSpec" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BadgeSpec = { id: string; @@ -96,23 +78,15 @@ export type BadgeSpec = { markdown: string; }; -// Warning: (ae-missing-release-tag) "BadgeStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BadgeStyle = typeof BADGE_STYLES[number]; -// Warning: (ae-missing-release-tag) "createDefaultBadgeFactories" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const createDefaultBadgeFactories: () => BadgeFactories; -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "DefaultBadgeBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class DefaultBadgeBuilder implements BadgeBuilder { constructor(factories: BadgeFactories); @@ -126,8 +100,6 @@ export class DefaultBadgeBuilder implements BadgeBuilder { protected getMarkdownCode(params: Badge, badgeUrl: string): string; } -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/badges-backend/src/badges.ts b/plugins/badges-backend/src/badges.ts index 78108de080..9167116d95 100644 --- a/plugins/badges-backend/src/badges.ts +++ b/plugins/badges-backend/src/badges.ts @@ -31,6 +31,7 @@ function entityUrl(context: BadgeContext): string { return `${catalogUrl}/${entityUri}`.toLowerCase(); } +/** @public */ export const createDefaultBadgeFactories = (): BadgeFactories => ({ pingback: { createBadge: (context: BadgeContext): Badge => { diff --git a/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts b/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts index 78e34351a0..efe58078f7 100644 --- a/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts +++ b/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts @@ -19,6 +19,7 @@ import { makeBadge, Format } from 'badge-maker'; import { BadgeBuilder, BadgeInfo, BadgeOptions, BadgeSpec } from './types'; import { Badge, BadgeFactories } from '../../types'; +/** @public */ export class DefaultBadgeBuilder implements BadgeBuilder { constructor(private readonly factories: BadgeFactories) {} diff --git a/plugins/badges-backend/src/lib/BadgeBuilder/types.ts b/plugins/badges-backend/src/lib/BadgeBuilder/types.ts index e2be17a7db..fa1dd4a5ad 100644 --- a/plugins/badges-backend/src/lib/BadgeBuilder/types.ts +++ b/plugins/badges-backend/src/lib/BadgeBuilder/types.ts @@ -16,15 +16,18 @@ import { Badge, BadgeContext } from '../../types'; +/** @public */ export type BadgeInfo = { id: string; }; +/** @public */ export type BadgeOptions = { badgeInfo: BadgeInfo; context: BadgeContext; }; +/** @public */ export type BadgeSpec = { /** Badge id */ id: string; @@ -39,6 +42,7 @@ export type BadgeSpec = { markdown: string; }; +/** @public */ export type BadgeBuilder = { getBadges(): Promise; createBadgeJson(options: BadgeOptions): Promise; diff --git a/plugins/badges-backend/src/service/router.ts b/plugins/badges-backend/src/service/router.ts index b7211a0aad..2006b45dc4 100644 --- a/plugins/badges-backend/src/service/router.ts +++ b/plugins/badges-backend/src/service/router.ts @@ -26,6 +26,7 @@ import { NotFoundError } from '@backstage/errors'; import { BadgeBuilder, DefaultBadgeBuilder } from '../lib/BadgeBuilder'; import { BadgeContext, BadgeFactories } from '../types'; +/** @public */ export interface RouterOptions { badgeBuilder?: BadgeBuilder; badgeFactories?: BadgeFactories; @@ -34,6 +35,7 @@ export interface RouterOptions { discovery: PluginEndpointDiscovery; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/plugins/badges-backend/src/types.ts b/plugins/badges-backend/src/types.ts index 0467b18155..eec7063f88 100644 --- a/plugins/badges-backend/src/types.ts +++ b/plugins/badges-backend/src/types.ts @@ -17,6 +17,7 @@ import { Config } from '@backstage/config'; import { Entity } from '@backstage/catalog-model'; +/** @public */ export const BADGE_STYLES = [ 'plastic', 'flat', @@ -24,8 +25,11 @@ export const BADGE_STYLES = [ 'for-the-badge', 'social', ] as const; + +/** @public */ export type BadgeStyle = typeof BADGE_STYLES[number]; +/** @public */ export interface Badge { /** Badge message background color. */ color?: string; @@ -48,16 +52,19 @@ export interface Badge { style?: BadgeStyle; } +/** @public */ export interface BadgeContext { badgeUrl: string; config: Config; entity?: Entity; // for entity badges } +/** @public */ export interface BadgeFactory { createBadge(context: BadgeContext): Badge; } +/** @public */ export interface BadgeFactories { [id: string]: BadgeFactory; } diff --git a/plugins/badges/api-report.md b/plugins/badges/api-report.md index e3af0857a4..b051bbb452 100644 --- a/plugins/badges/api-report.md +++ b/plugins/badges/api-report.md @@ -7,18 +7,11 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "badgesPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const badgesPlugin: BackstagePlugin<{}, {}, {}>; -// Warning: (ae-missing-release-tag) "EntityBadgesDialog" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityBadgesDialog: ({ - open, - onClose, -}: { +export const EntityBadgesDialog: (props: { open: boolean; onClose?: (() => any) | undefined; }) => JSX.Element; diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx index 422dbc96a3..097bba5581 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.tsx @@ -37,12 +37,11 @@ import { } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; -type Props = { +export const EntityBadgesDialog = (props: { open: boolean; onClose?: () => any; -}; - -export const EntityBadgesDialog = ({ open, onClose }: Props) => { +}) => { + const { open, onClose } = props; const theme = useTheme(); const { entity } = useAsyncEntity(); const fullScreen = useMediaQuery(theme.breakpoints.down('sm')); diff --git a/plugins/badges/src/plugin.ts b/plugins/badges/src/plugin.ts index ee88fb31e0..7ef3025458 100644 --- a/plugins/badges/src/plugin.ts +++ b/plugins/badges/src/plugin.ts @@ -22,6 +22,7 @@ import { identityApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const badgesPlugin = createPlugin({ id: 'badges', apis: [ @@ -34,6 +35,7 @@ export const badgesPlugin = createPlugin({ ], }); +/** @public */ export const EntityBadgesDialog = badgesPlugin.provide( createComponentExtension({ name: 'EntityBadgesDialog', diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 5232c49150..6e0ba235b7 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -109,20 +109,13 @@ export const columnFactories: Readonly<{ createEntityRefColumn(options: { defaultKind?: string; }): TableColumn; - createEntityRelationColumn({ - title, - relation, - defaultKind, - filter: entityFilter, - }: { + createEntityRelationColumn(options: { title: string; relation: string; - defaultKind?: string | undefined; - filter?: - | { - kind: string; - } - | undefined; + defaultKind?: string; + filter?: { + kind: string; + }; }): TableColumn; createOwnerColumn(): TableColumn; createDomainColumn(): TableColumn; @@ -324,12 +317,7 @@ export const EntityTable: { createEntityRefColumn(options: { defaultKind?: string | undefined; }): TableColumn; - createEntityRelationColumn({ - title, - relation, - defaultKind, - filter: entityFilter, - }: { + createEntityRelationColumn(options: { title: string; relation: string; defaultKind?: string | undefined; diff --git a/plugins/catalog-react/src/components/EntityTable/columns.tsx b/plugins/catalog-react/src/components/EntityTable/columns.tsx index 72b6931e94..292235c78c 100644 --- a/plugins/catalog-react/src/components/EntityTable/columns.tsx +++ b/plugins/catalog-react/src/components/EntityTable/columns.tsx @@ -70,17 +70,14 @@ export const columnFactories = Object.freeze({ ), }; }, - createEntityRelationColumn({ - title, - relation, - defaultKind, - filter: entityFilter, - }: { + createEntityRelationColumn(options: { title: string; relation: string; defaultKind?: string; filter?: { kind: string }; }): TableColumn { + const { title, relation, defaultKind, filter: entityFilter } = options; + function getRelations(entity: T): CompoundEntityRef[] { return getEntityRelations(entity, relation, entityFilter); } diff --git a/plugins/circleci/api-report.md b/plugins/circleci/api-report.md index e8640ec78b..034cfae3ee 100644 --- a/plugins/circleci/api-report.md +++ b/plugins/circleci/api-report.md @@ -44,10 +44,7 @@ export class CircleCIApi { ): Promise; // (undocumented) getBuilds( - { - limit, - offset, - }: { + pagination: { limit: number; offset: number; }, diff --git a/plugins/circleci/src/api/CircleCIApi.ts b/plugins/circleci/src/api/CircleCIApi.ts index 78b8b378d6..931feec4d5 100644 --- a/plugins/circleci/src/api/CircleCIApi.ts +++ b/plugins/circleci/src/api/CircleCIApi.ts @@ -62,9 +62,10 @@ export class CircleCIApi { } async getBuilds( - { limit = 10, offset = 0 }: { limit: number; offset: number }, + pagination: { limit: number; offset: number }, options: Partial, ) { + const { limit = 10, offset = 0 } = pagination; return getBuildSummaries('', { options: { limit, diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index 5d2dc325e4..34b50b54d8 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -128,18 +128,14 @@ export const EntityCloudbuildContent: () => JSX.Element; // Warning: (ae-missing-release-tag) "EntityLatestCloudbuildRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const EntityLatestCloudbuildRunCard: ({ - branch, -}: { +export const EntityLatestCloudbuildRunCard: (props: { branch: string; }) => JSX.Element; // Warning: (ae-missing-release-tag) "EntityLatestCloudbuildsForBranchCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const EntityLatestCloudbuildsForBranchCard: ({ - branch, -}: { +export const EntityLatestCloudbuildsForBranchCard: (props: { branch: string; }) => JSX.Element; @@ -163,18 +159,12 @@ export { isCloudbuildAvailable as isPluginApplicableToEntity }; // Warning: (ae-missing-release-tag) "LatestWorkflowRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const LatestWorkflowRunCard: ({ - branch, -}: { - branch: string; -}) => JSX.Element; +export const LatestWorkflowRunCard: (props: { branch: string }) => JSX.Element; // Warning: (ae-missing-release-tag) "LatestWorkflowsForBranchCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const LatestWorkflowsForBranchCard: ({ - branch, -}: { +export const LatestWorkflowsForBranchCard: (props: { branch: string; }) => JSX.Element; diff --git a/plugins/cloudbuild/src/components/Cards/Cards.tsx b/plugins/cloudbuild/src/components/Cards/Cards.tsx index 82e0eb1b88..75c9ee432b 100644 --- a/plugins/cloudbuild/src/components/Cards/Cards.tsx +++ b/plugins/cloudbuild/src/components/Cards/Cards.tsx @@ -72,11 +72,8 @@ const WidgetContent = ({ ); }; -export const LatestWorkflowRunCard = ({ - branch = 'master', -}: { - branch: string; -}) => { +export const LatestWorkflowRunCard = (props: { branch: string }) => { + const { branch = 'master' } = props; const { entity } = useEntity(); const errorApi = useApi(errorApiRef); const projectId = entity?.metadata.annotations?.[CLOUDBUILD_ANNOTATION] || ''; @@ -103,11 +100,8 @@ export const LatestWorkflowRunCard = ({ ); }; -export const LatestWorkflowsForBranchCard = ({ - branch = 'master', -}: { - branch: string; -}) => { +export const LatestWorkflowsForBranchCard = (props: { branch: string }) => { + const { branch = 'master' } = props; const { entity } = useEntity(); return ( diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index a6a63770ca..0e532178e1 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -61,8 +61,8 @@ const useStyles = makeStyles(theme => ({ }, })); -export const WorkflowRunDetails = ({ entity }: { entity: Entity }) => { - const { value: projectName, loading, error } = useProjectName(entity); +export const WorkflowRunDetails = (props: { entity: Entity }) => { + const { value: projectName, loading, error } = useProjectName(props.entity); const [projectId] = (projectName ?? '/').split('/'); const details = useWorkflowRunsDetails(projectId); diff --git a/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx b/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx index 3f43d84ce4..fce8566dc0 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx @@ -23,11 +23,8 @@ import { StatusError, } from '@backstage/core-components'; -export const WorkflowRunStatus = ({ - status, -}: { - status: string | undefined; -}) => { +export const WorkflowRunStatus = (props: { status: string | undefined }) => { + const { status } = props; if (status === undefined) return null; switch (status.toLocaleLowerCase('en-US')) { case 'queued': diff --git a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx index d79d481cd4..a8e2a12ea8 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx @@ -164,8 +164,8 @@ export const WorkflowRunsTableView = ({ ); }; -export const WorkflowRunsTable = ({ entity }: { entity: Entity }) => { - const { value: projectName, loading } = useProjectName(entity); +export const WorkflowRunsTable = (props: { entity: Entity }) => { + const { value: projectName, loading } = useProjectName(props.entity); const [projectId] = (projectName ?? '/').split('/'); const [tableProps, { retry, setPage, setPageSize }] = useWorkflowRuns({ diff --git a/plugins/cloudbuild/src/components/useWorkflowRuns.ts b/plugins/cloudbuild/src/components/useWorkflowRuns.ts index f2e107ea3f..424f08e38d 100644 --- a/plugins/cloudbuild/src/components/useWorkflowRuns.ts +++ b/plugins/cloudbuild/src/components/useWorkflowRuns.ts @@ -33,7 +33,8 @@ export type WorkflowRun = { rerun: () => void; }; -export function useWorkflowRuns({ projectId }: { projectId: string }) { +export function useWorkflowRuns(options: { projectId: string }) { + const { projectId } = options; const api = useApi(cloudbuildApiRef); const errorApi = useApi(errorApiRef); diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md index ccb4dcae8d..5cf1c3ed34 100644 --- a/plugins/kubernetes/api-report.md +++ b/plugins/kubernetes/api-report.md @@ -208,16 +208,10 @@ export interface GroupedResponses extends DeploymentResources { // @public (undocumented) export const GroupedResponsesContext: React_2.Context; -// Warning: (ae-missing-release-tag) "HorizontalPodAutoscalerDrawer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const HorizontalPodAutoscalerDrawer: ({ - hpa, - expanded, - children, -}: { +export const HorizontalPodAutoscalerDrawer: (props: { hpa: V1HorizontalPodAutoscaler; - expanded?: boolean | undefined; + expanded?: boolean; children?: React_2.ReactNode; }) => JSX.Element; @@ -361,15 +355,10 @@ const kubernetesPlugin: BackstagePlugin< export { kubernetesPlugin }; export { kubernetesPlugin as plugin }; -// Warning: (ae-missing-release-tag) "PodDrawer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const PodDrawer: ({ - pod, - expanded, -}: { +export const PodDrawer: (props: { pod: V1Pod; - expanded?: boolean | undefined; + expanded?: boolean; }) => JSX.Element; // Warning: (ae-missing-release-tag) "PodNamesWithErrorsContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/plugins/kubernetes/src/components/HorizontalPodAutoscalers/HorizontalPodAutoscalerDrawer.tsx b/plugins/kubernetes/src/components/HorizontalPodAutoscalers/HorizontalPodAutoscalerDrawer.tsx index 504a4f26bc..ca7abe07aa 100644 --- a/plugins/kubernetes/src/components/HorizontalPodAutoscalers/HorizontalPodAutoscalerDrawer.tsx +++ b/plugins/kubernetes/src/components/HorizontalPodAutoscalers/HorizontalPodAutoscalerDrawer.tsx @@ -18,15 +18,14 @@ import React from 'react'; import { V1HorizontalPodAutoscaler } from '@kubernetes/client-node'; import { KubernetesDrawer } from '../KubernetesDrawer/KubernetesDrawer'; -export const HorizontalPodAutoscalerDrawer = ({ - hpa, - expanded, - children, -}: { +/** @public */ +export const HorizontalPodAutoscalerDrawer = (props: { hpa: V1HorizontalPodAutoscaler; expanded?: boolean; children?: React.ReactNode; }) => { + const { hpa, expanded, children } = props; + return ( { +/** @public */ +export const PodDrawer = (props: { pod: V1Pod; expanded?: boolean }) => { + const { pod, expanded } = props; + return ( ; // (undocumented) - completeTask({ - taskId, - status, - eventBody, - }: { + completeTask(options: { taskId: string; status: TaskStatus; eventBody: JsonObject; @@ -488,11 +484,11 @@ export class DatabaseTaskStore implements TaskStore { tasks: SerializedTask[]; }>; // (undocumented) - listEvents({ taskId, after }: TaskStoreListEventsOptions): Promise<{ + listEvents(options: TaskStoreListEventsOptions): Promise<{ events: SerializedTaskEvent[]; }>; // (undocumented) - listStaleTasks({ timeoutS }: { timeoutS: number }): Promise<{ + listStaleTasks(options: { timeoutS: number }): Promise<{ tasks: { taskId: string; }[]; @@ -508,13 +504,7 @@ export type DatabaseTaskStoreOptions = { export const executeShellCommand: (options: RunCommandOptions) => Promise; // @public -export function fetchContents({ - reader, - integrations, - baseUrl, - fetchUrl, - outputPath, -}: { +export function fetchContents(options: { reader: UrlReader; integrations: ScmIntegrations; baseUrl?: string; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts index a01fcee6f7..4b82595cfd 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts @@ -26,19 +26,15 @@ import path from 'path'; * * @public */ -export async function fetchContents({ - reader, - integrations, - baseUrl, - fetchUrl = '.', - outputPath, -}: { +export async function fetchContents(options: { reader: UrlReader; integrations: ScmIntegrations; baseUrl?: string; fetchUrl?: string; outputPath: string; }) { + const { reader, integrations, baseUrl, fetchUrl = '.', outputPath } = options; + let fetchUrlIsAbsolute = false; try { // eslint-disable-next-line no-new diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index d62e59744f..978affb864 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -211,9 +211,11 @@ export class DatabaseTaskStore implements TaskStore { } } - async listStaleTasks({ timeoutS }: { timeoutS: number }): Promise<{ + async listStaleTasks(options: { timeoutS: number }): Promise<{ tasks: { taskId: string }[]; }> { + const { timeoutS } = options; + const rawRows = await this.db('tasks') .where('status', 'processing') .andWhere( @@ -232,15 +234,13 @@ export class DatabaseTaskStore implements TaskStore { return { tasks }; } - async completeTask({ - taskId, - status, - eventBody, - }: { + async completeTask(options: { taskId: string; status: TaskStatus; eventBody: JsonObject; }): Promise { + const { taskId, status, eventBody } = options; + let oldStatus: string; if (status === 'failed' || status === 'completed') { oldStatus = 'processing'; @@ -301,10 +301,10 @@ export class DatabaseTaskStore implements TaskStore { }); } - async listEvents({ - taskId, - after, - }: TaskStoreListEventsOptions): Promise<{ events: SerializedTaskEvent[] }> { + async listEvents( + options: TaskStoreListEventsOptions, + ): Promise<{ events: SerializedTaskEvent[] }> { + const { taskId, after } = options; const rawEvents = await this.db('task_events') .where({ task_id: taskId, diff --git a/plugins/search-backend-module-elasticsearch/api-report.md b/plugins/search-backend-module-elasticsearch/api-report.md index 5a951948c2..be54fe9d4a 100644 --- a/plugins/search-backend-module-elasticsearch/api-report.md +++ b/plugins/search-backend-module-elasticsearch/api-report.md @@ -132,17 +132,13 @@ export class ElasticSearchClientWrapper { refreshOnCompletion?: string | boolean; }): BulkHelper; // (undocumented) - createIndex({ - index, - }: { + createIndex(options: { index: string; }): | TransportRequestPromise, unknown>> | TransportRequestPromise_2, unknown>>; // (undocumented) - deleteIndex({ - index, - }: { + deleteIndex(options: { index: string | string[]; }): | TransportRequestPromise, unknown>> @@ -152,17 +148,13 @@ export class ElasticSearchClientWrapper { options: ElasticSearchClientOptions, ): ElasticSearchClientWrapper; // (undocumented) - getAliases({ - aliases, - }: { + getAliases(options: { aliases: string[]; }): | TransportRequestPromise, unknown>> | TransportRequestPromise_2, unknown>>; // (undocumented) - indexExists({ - index, - }: { + indexExists(options: { index: string | string[]; }): | TransportRequestPromise> @@ -174,19 +166,14 @@ export class ElasticSearchClientWrapper { | TransportRequestPromise, unknown>> | TransportRequestPromise_2, unknown>>; // (undocumented) - search({ - index, - body, - }: { + search(options: { index: string | string[]; body: Object; }): | TransportRequestPromise, unknown>> | TransportRequestPromise_2, unknown>>; // (undocumented) - updateAliases({ - actions, - }: { + updateAliases(options: { actions: ElasticSearchAliasAction[]; }): | TransportRequestPromise, unknown>> diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchClientWrapper.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchClientWrapper.ts index bcf67e091c..395f861223 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchClientWrapper.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchClientWrapper.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Client as ElasticSearchClient } from '@elastic/elasticsearch'; import { Client as OpenSearchClient } from '@opensearch-project/opensearch'; import { Readable } from 'stream'; @@ -69,15 +70,12 @@ export class ElasticSearchClientWrapper { private readonly elasticSearchClient: ElasticSearchClient | undefined; private readonly openSearchClient: OpenSearchClient | undefined; - private constructor({ - openSearchClient, - elasticSearchClient, - }: { + private constructor(options: { openSearchClient?: OpenSearchClient; elasticSearchClient?: ElasticSearchClient; }) { - this.openSearchClient = openSearchClient; - this.elasticSearchClient = elasticSearchClient; + this.openSearchClient = options.openSearchClient; + this.elasticSearchClient = options.elasticSearchClient; } static fromClientOptions(options: ElasticSearchClientOptions) { @@ -92,13 +90,13 @@ export class ElasticSearchClientWrapper { }); } - search({ index, body }: { index: string | string[]; body: Object }) { + search(options: { index: string | string[]; body: Object }) { if (this.openSearchClient) { - return this.openSearchClient.search({ index, body }); + return this.openSearchClient.search(options); } if (this.elasticSearchClient) { - return this.elasticSearchClient.search({ index, body }); + return this.elasticSearchClient.search(options); } throw new Error('No client defined'); @@ -132,43 +130,45 @@ export class ElasticSearchClientWrapper { throw new Error('No client defined'); } - indexExists({ index }: { index: string | string[] }) { + indexExists(options: { index: string | string[] }) { if (this.openSearchClient) { - return this.openSearchClient.indices.exists({ index }); + return this.openSearchClient.indices.exists(options); } if (this.elasticSearchClient) { - return this.elasticSearchClient.indices.exists({ index }); + return this.elasticSearchClient.indices.exists(options); } throw new Error('No client defined'); } - deleteIndex({ index }: { index: string | string[] }) { + deleteIndex(options: { index: string | string[] }) { if (this.openSearchClient) { - return this.openSearchClient.indices.delete({ index }); + return this.openSearchClient.indices.delete(options); } if (this.elasticSearchClient) { - return this.elasticSearchClient.indices.delete({ index }); + return this.elasticSearchClient.indices.delete(options); } throw new Error('No client defined'); } - createIndex({ index }: { index: string }) { + createIndex(options: { index: string }) { if (this.openSearchClient) { - return this.openSearchClient.indices.create({ index }); + return this.openSearchClient.indices.create(options); } if (this.elasticSearchClient) { - return this.elasticSearchClient.indices.create({ index }); + return this.elasticSearchClient.indices.create(options); } throw new Error('No client defined'); } - getAliases({ aliases }: { aliases: string[] }) { + getAliases(options: { aliases: string[] }) { + const { aliases } = options; + if (this.openSearchClient) { return this.openSearchClient.cat.aliases({ format: 'json', @@ -186,8 +186,9 @@ export class ElasticSearchClientWrapper { throw new Error('No client defined'); } - updateAliases({ actions }: { actions: ElasticSearchAliasAction[] }) { - const filteredActions = actions.filter(Boolean); + updateAliases(options: { actions: ElasticSearchAliasAction[] }) { + const filteredActions = options.actions.filter(Boolean); + if (this.openSearchClient) { return this.openSearchClient.indices.updateAliases({ body: { diff --git a/plugins/sonarqube-backend/api-report.md b/plugins/sonarqube-backend/api-report.md index f4c48cadce..0fbd463cf3 100644 --- a/plugins/sonarqube-backend/api-report.md +++ b/plugins/sonarqube-backend/api-report.md @@ -13,13 +13,10 @@ export function createRouter(options: RouterOptions): Promise; // @public export class DefaultSonarqubeInfoProvider implements SonarqubeInfoProvider { static fromConfig(config: Config): DefaultSonarqubeInfoProvider; - getBaseUrl({ instanceName }?: { instanceName?: string }): { + getBaseUrl(options?: { instanceName?: string }): { baseUrl: string; }; - getFindings({ - componentKey, - instanceName, - }: { + getFindings(options: { componentKey: string; instanceName?: string; }): Promise; @@ -35,9 +32,7 @@ export interface RouterOptions { export class SonarqubeConfig { constructor(instances: SonarqubeInstanceConfig[]); static fromConfig(config: Config): SonarqubeConfig; - getInstanceConfig({ - sonarqubeName, - }?: { + getInstanceConfig(options?: { sonarqubeName?: string; }): SonarqubeInstanceConfig; // (undocumented) @@ -52,13 +47,10 @@ export interface SonarqubeFindings { // @public export interface SonarqubeInfoProvider { - getBaseUrl({ instanceName }?: { instanceName?: string }): { + getBaseUrl(options?: { instanceName?: string }): { baseUrl: string; }; - getFindings({ - componentKey, - instanceName, - }: { + getFindings(options: { componentKey: string; instanceName?: string; }): Promise; diff --git a/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.ts b/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.ts index 7027738d2c..2b96e6764e 100644 --- a/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.ts +++ b/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.ts @@ -30,7 +30,7 @@ export interface SonarqubeInfoProvider { * @param instanceName - Name of the sonarqube instance to get the info from * @returns the url of the instance */ - getBaseUrl({ instanceName }?: { instanceName?: string }): { baseUrl: string }; + getBaseUrl(options?: { instanceName?: string }): { baseUrl: string }; /** * Query the sonarqube instance corresponding to the instanceName to get all @@ -43,10 +43,7 @@ export interface SonarqubeInfoProvider { * @returns All measures with the analysis date. Will return undefined if we * can't provide the full response */ - getFindings({ - componentKey, - instanceName, - }: { + getFindings(options: { componentKey: string; instanceName?: string; }): Promise; @@ -185,9 +182,10 @@ export class SonarqubeConfig { * @returns The requested Sonarqube instance. * @throws Error when no default config could be found or the requested name couldn't be found in config. */ - getInstanceConfig({ - sonarqubeName, - }: { sonarqubeName?: string } = {}): SonarqubeInstanceConfig { + getInstanceConfig( + options: { sonarqubeName?: string } = {}, + ): SonarqubeInstanceConfig { + const { sonarqubeName } = options; const DEFAULT_SONARQUBE_NAME = 'default'; if (!sonarqubeName || sonarqubeName === DEFAULT_SONARQUBE_NAME) { @@ -303,11 +301,11 @@ export class DefaultSonarqubeInfoProvider implements SonarqubeInfoProvider { * {@inheritDoc SonarqubeInfoProvider.getBaseUrl} * @throws Error If configuration can't be retrieved. */ - getBaseUrl({ instanceName }: { instanceName?: string } = {}): { + getBaseUrl(options: { instanceName?: string } = {}): { baseUrl: string; } { const instanceConfig = this.config.getInstanceConfig({ - sonarqubeName: instanceName, + sonarqubeName: options.instanceName, }); return { baseUrl: instanceConfig.baseUrl }; } @@ -316,13 +314,11 @@ export class DefaultSonarqubeInfoProvider implements SonarqubeInfoProvider { * {@inheritDoc SonarqubeInfoProvider.getFindings} * @throws Error If configuration can't be retrieved. */ - async getFindings({ - componentKey, - instanceName, - }: { + async getFindings(options: { componentKey: string; instanceName?: string; }): Promise { + const { componentKey, instanceName } = options; const { baseUrl, apiKey } = this.config.getInstanceConfig({ sonarqubeName: instanceName, }); diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index 7922ea992e..b2f0331a9b 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -353,10 +353,8 @@ export type TechDocsReaderPageRenderFunction = (options: { }) => JSX.Element; // @public -export const TechDocsReaderPageSubheader: ({ - toolbarProps, -}: { - toolbarProps?: ToolbarProps<'div', {}> | undefined; +export const TechDocsReaderPageSubheader: (props: { + toolbarProps?: ToolbarProps; }) => JSX.Element | null; // @public diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx index a0013e81ab..0cef4d521f 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx @@ -47,9 +47,7 @@ const useStyles = makeStyles(theme => ({ * Please use the Tech Docs add-ons to customize it * @public */ -export const TechDocsReaderPageSubheader = ({ - toolbarProps, -}: { +export const TechDocsReaderPageSubheader = (props: { toolbarProps?: ToolbarProps; }) => { const classes = useStyles(); @@ -81,7 +79,7 @@ export const TechDocsReaderPageSubheader = ({ if (entityMetadataLoading === false && !entityMetadata) return null; return ( - + Date: Thu, 18 Aug 2022 19:52:18 +0000 Subject: [PATCH 121/275] fix(deps): update dependency aws-sdk to v2.1198.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e697cffa41..f743e4738b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8982,9 +8982,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: - version "2.1197.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1197.0.tgz#d679f52353f03e598ffed5609ed65593cef1f83f" - integrity sha512-BUxYU+gzxCylEM37NeGcS5kWotXVmKrOBG9+/+U+tnOTW7/3yNBrBfhPrs5IgMhm7H38CLWgOqwJaGDlYzwH/Q== + version "2.1198.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1198.0.tgz#9fc8aab80c45e80a21e5e7e88d8e89526ff5c413" + integrity sha512-blFAqK+6N1iKDseAlTwEwpfh3YdCluOwuo/Glv6+A5dvcq78/kqYB+haND8rXL1Esg4BiqVtafHp35FuwQzTTQ== dependencies: buffer "4.9.2" events "1.1.1" From 6f455dff1491c01f419b32f080aa68052f46be84 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 18 Aug 2022 23:04:45 +0200 Subject: [PATCH 122/275] Update lazy-snakes-film.md Signed-off-by: Patrik Oldsberg --- .changeset/lazy-snakes-film.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/lazy-snakes-film.md b/.changeset/lazy-snakes-film.md index ff4097f78f..ffb9c539c8 100644 --- a/.changeset/lazy-snakes-film.md +++ b/.changeset/lazy-snakes-film.md @@ -1,5 +1,5 @@ --- -'@backstage/core-components': minor +'@backstage/core-components': patch --- Adds code to generate ids for headers parsed through the MarkdownContent component. From e1ebaeb332fe8d8da4c3574e7c107930cb1d4556 Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Thu, 18 Aug 2022 15:00:52 +1000 Subject: [PATCH 123/275] Add the JWT to the CloudflareAccessResult Signed-off-by: Tyler Davis --- .changeset/rich-cooks-camp.md | 5 +++++ .../auth-backend/src/providers/cloudflare-access/provider.ts | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 .changeset/rich-cooks-camp.md diff --git a/.changeset/rich-cooks-camp.md b/.changeset/rich-cooks-camp.md new file mode 100644 index 0000000000..04d86033f7 --- /dev/null +++ b/.changeset/rich-cooks-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Cloudflare Access Provider: Add JWT to CloudflareAccessResult diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts index a2c16fcebf..38205c9cff 100644 --- a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts @@ -153,6 +153,7 @@ export type CloudflareAccessResult = { claims: CloudflareAccessClaims; cfIdentity: CloudflareAccessIdentityProfile; expiresInSeconds?: number; + jwt: string; }; /** @@ -277,6 +278,7 @@ export class CloudflareAccessAuthProvider implements AuthProviderRouteHandlers { claims, cfIdentity, expiresInSeconds: claims.exp - claims.iat, + jwt, }; this.cache?.set(`${CACHE_PREFIX}/${sub}`, JSON.stringify(cfAccessResult)); return cfAccessResult; From 3b40d807475a5e43ab488dafdd357b0b5292e284 Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Fri, 19 Aug 2022 11:48:17 +1000 Subject: [PATCH 124/275] update API report Signed-off-by: Tyler Davis --- plugins/auth-backend/api-report.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index 649a31c963..687852f786 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -204,6 +204,7 @@ export type CloudflareAccessResult = { claims: CloudflareAccessClaims; cfIdentity: CloudflareAccessIdentityProfile; expiresInSeconds?: number; + jwt: string; }; // @public From e117ad2fec48d680dc85701e275f594ea9461d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 09:38:13 +0200 Subject: [PATCH 125/275] code-climate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/code-climate/api-report.md | 22 +------------------ .../code-climate/src/api/code-climate-api.ts | 2 ++ .../code-climate/src/api/code-climate-data.ts | 1 + plugins/code-climate/src/api/mock/index.ts | 1 - plugins/code-climate/src/api/mock/mock-api.ts | 1 + .../code-climate/src/api/production-api.ts | 8 ++----- .../CodeClimateTable.test.tsx | 2 +- plugins/code-climate/src/plugin.ts | 2 ++ scripts/api-extractor.ts | 1 - 9 files changed, 10 insertions(+), 30 deletions(-) diff --git a/plugins/code-climate/api-report.md b/plugins/code-climate/api-report.md index 5ef53cf543..f4a2d3a26d 100644 --- a/plugins/code-climate/api-report.md +++ b/plugins/code-climate/api-report.md @@ -11,21 +11,15 @@ import { DiscoveryApi } from '@backstage/core-plugin-api'; import { FetchApi } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "CodeClimateApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CodeClimateApi { // (undocumented) fetchData(repoID: string): Promise; } -// Warning: (ae-missing-release-tag) "codeClimateApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const codeClimateApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "CodeClimateData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CodeClimateData = { repoID: string; @@ -42,8 +36,6 @@ export type CodeClimateData = { numberOfOtherIssues: number; }; -// Warning: (ae-missing-release-tag) "codeClimatePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const codeClimatePlugin: BackstagePlugin< { @@ -53,30 +45,18 @@ export const codeClimatePlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "EntityCodeClimateCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityCodeClimateCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "MockCodeClimateApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class MockCodeClimateApi implements CodeClimateApi { // (undocumented) fetchData(): Promise; } -// Warning: (ae-missing-release-tag) "mockData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const mockData: CodeClimateData; - -// Warning: (ae-missing-release-tag) "ProductionCodeClimateApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class ProductionCodeClimateApi implements CodeClimateApi { - // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts - constructor(options: Options); + constructor(options: { discoveryApi: DiscoveryApi; fetchApi: FetchApi }); // (undocumented) fetchAllData(options: { apiUrl: string; diff --git a/plugins/code-climate/src/api/code-climate-api.ts b/plugins/code-climate/src/api/code-climate-api.ts index fb4f41ebb5..d58d355d75 100644 --- a/plugins/code-climate/src/api/code-climate-api.ts +++ b/plugins/code-climate/src/api/code-climate-api.ts @@ -17,10 +17,12 @@ import { CodeClimateData } from './code-climate-data'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const codeClimateApiRef = createApiRef({ id: 'plugin.code-climate.service', }); +/** @public */ export interface CodeClimateApi { fetchData(repoID: string): Promise; } diff --git a/plugins/code-climate/src/api/code-climate-data.ts b/plugins/code-climate/src/api/code-climate-data.ts index 9271905157..77e10d67d9 100644 --- a/plugins/code-climate/src/api/code-climate-data.ts +++ b/plugins/code-climate/src/api/code-climate-data.ts @@ -164,6 +164,7 @@ export type CodeClimateIssuesData = { meta: { current_page: number; total_pages: number; total_count: number }; }; +/** @public */ export type CodeClimateData = { repoID: string; maintainability: { diff --git a/plugins/code-climate/src/api/mock/index.ts b/plugins/code-climate/src/api/mock/index.ts index 56ba9c7974..0044fec7bb 100644 --- a/plugins/code-climate/src/api/mock/index.ts +++ b/plugins/code-climate/src/api/mock/index.ts @@ -14,5 +14,4 @@ * limitations under the License. */ -export { mockData } from './mock-api'; export { MockCodeClimateApi } from './mock-api'; diff --git a/plugins/code-climate/src/api/mock/mock-api.ts b/plugins/code-climate/src/api/mock/mock-api.ts index 74e4d83027..65ac6de3b8 100644 --- a/plugins/code-climate/src/api/mock/mock-api.ts +++ b/plugins/code-climate/src/api/mock/mock-api.ts @@ -47,6 +47,7 @@ export const mockData: CodeClimateData = { numberOfOtherIssues: 26, }; +/** @public */ export class MockCodeClimateApi implements CodeClimateApi { fetchData(): Promise { return new Promise(resolve => { diff --git a/plugins/code-climate/src/api/production-api.ts b/plugins/code-climate/src/api/production-api.ts index 81ba6b9ad6..e227201b9d 100644 --- a/plugins/code-climate/src/api/production-api.ts +++ b/plugins/code-climate/src/api/production-api.ts @@ -34,16 +34,12 @@ const codeSmellsQuery = `${basicIssuesOptions}&${categoriesFilter}=Complexity`; const duplicationQuery = `${basicIssuesOptions}&${categoriesFilter}=Duplication`; const otherIssuesQuery = `${basicIssuesOptions}&${categoriesFilter}=Bug%20Risk`; -type Options = { - discoveryApi: DiscoveryApi; - fetchApi: FetchApi; -}; - +/** @public */ export class ProductionCodeClimateApi implements CodeClimateApi { private readonly discoveryApi: DiscoveryApi; private readonly fetchApi: FetchApi; - constructor(options: Options) { + constructor(options: { discoveryApi: DiscoveryApi; fetchApi: FetchApi }) { this.discoveryApi = options.discoveryApi; this.fetchApi = options.fetchApi; } diff --git a/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx index a2ced6f5a2..70d34d0298 100644 --- a/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx +++ b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { CodeClimateTable } from './CodeClimateTable'; -import { mockData } from '../../api/mock'; +import { mockData } from '../../api/mock/mock-api'; import { ThemeProvider } from '@material-ui/core'; import { lightTheme } from '@backstage/theme'; diff --git a/plugins/code-climate/src/plugin.ts b/plugins/code-climate/src/plugin.ts index 54502b6355..38bb268388 100644 --- a/plugins/code-climate/src/plugin.ts +++ b/plugins/code-climate/src/plugin.ts @@ -30,6 +30,7 @@ export const rootRouteRef = createRouteRef({ id: 'code-climate', }); +/** @public */ export const codeClimatePlugin = createPlugin({ id: 'code-climate', apis: [ @@ -48,6 +49,7 @@ export const codeClimatePlugin = createPlugin({ }, }); +/** @public */ export const EntityCodeClimateCard = codeClimatePlugin.provide( createComponentExtension({ name: 'EntityCodeClimateCard', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index be1f9ce038..ca710e1885 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -210,7 +210,6 @@ const ALLOW_WARNINGS = [ 'plugins/cicd-statistics', 'plugins/circleci', 'plugins/cloudbuild', - 'plugins/code-climate', 'plugins/config-schema', 'plugins/cost-insights', 'plugins/dynatrace', From dbd7365130d78bbf0832fd92a246fe3d80bb3844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 09:52:22 +0200 Subject: [PATCH 126/275] rollbar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/rollbar/api-report.md | 191 +++++++++++++++--- plugins/rollbar/src/api/RollbarApi.ts | 2 + plugins/rollbar/src/api/RollbarClient.ts | 1 + plugins/rollbar/src/api/index.ts | 1 + plugins/rollbar/src/api/types.ts | 12 ++ .../EntityPageRollbar/EntityPageRollbar.tsx | 1 + plugins/rollbar/src/components/Router.tsx | 6 +- plugins/rollbar/src/constants.ts | 1 + plugins/rollbar/src/plugin.ts | 2 + scripts/api-extractor.ts | 1 - 10 files changed, 187 insertions(+), 31 deletions(-) diff --git a/plugins/rollbar/api-report.md b/plugins/rollbar/api-report.md index 27f0e4641b..5ee8a50ce3 100644 --- a/plugins/rollbar/api-report.md +++ b/plugins/rollbar/api-report.md @@ -12,44 +12,28 @@ import { Entity } from '@backstage/catalog-model'; import { IdentityApi } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "EntityPageRollbar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityPageRollbar: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityRollbarContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntityRollbarContent: (_props: {}) => JSX.Element; +export const EntityRollbarContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "isPluginApplicableToEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; export { isPluginApplicableToEntity }; export { isPluginApplicableToEntity as isRollbarAvailable }; -// Warning: (ae-missing-release-tag) "ROLLBAR_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ROLLBAR_ANNOTATION = 'rollbar.com/project-slug'; -// Warning: (ae-missing-release-tag) "RollbarApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RollbarApi { - // Warning: (ae-forgotten-export) The symbol "RollbarProject" needs to be exported by the entry point index.d.ts - // // (undocumented) getAllProjects(): Promise; // (undocumented) getProject(projectName: string): Promise; - // Warning: (ae-forgotten-export) The symbol "RollbarItemsResponse" needs to be exported by the entry point index.d.ts - // // (undocumented) getProjectItems(project: string): Promise; - // Warning: (ae-forgotten-export) The symbol "RollbarTopActiveItem" needs to be exported by the entry point index.d.ts - // // (undocumented) getTopActiveItems( project: string, @@ -57,13 +41,9 @@ export interface RollbarApi { ): Promise; } -// Warning: (ae-missing-release-tag) "rollbarApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const rollbarApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "RollbarClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class RollbarClient implements RollbarApi { constructor(options: { @@ -84,8 +64,131 @@ export class RollbarClient implements RollbarApi { ): Promise; } -// Warning: (ae-missing-release-tag) "rollbarPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type RollbarEnvironment = 'production' | string; + +// @public (undocumented) +export enum RollbarFrameworkId { + // (undocumented) + 'browser-js' = 7, + // (undocumented) + 'node-js' = 4, + // (undocumented) + 'rollbar-system' = 8, + // (undocumented) + 'android' = 9, + // (undocumented) + 'celery' = 17, + // (undocumented) + 'django' = 2, + // (undocumented) + 'flask' = 16, + // (undocumented) + 'ios' = 10, + // (undocumented) + 'logentries' = 12, + // (undocumented) + 'mailgun' = 11, + // (undocumented) + 'php' = 6, + // (undocumented) + 'pylons' = 5, + // (undocumented) + 'pyramid' = 3, + // (undocumented) + 'python' = 13, + // (undocumented) + 'rails' = 1, + // (undocumented) + 'rq' = 18, + // (undocumented) + 'ruby' = 14, + // (undocumented) + 'sidekiq' = 15, + // (undocumented) + 'unknown' = 0, +} + +// @public (undocumented) +export type RollbarItem = { + publicItemId: number; + integrationsData: null; + levelLock: number; + controllingId: number; + lastActivatedTimestamp: number; + assignedUserId: number; + groupStatus: number; + hash: string; + id: number; + environment: RollbarEnvironment; + titleLock: number; + title: string; + lastOccurrenceId: number; + lastOccurrenceTimestamp: number; + platform: RollbarPlatformId; + firstOccurrenceTimestamp: number; + project_id: number; + resolvedInVersion: string; + status: 'enabled' | string; + uniqueOccurrences: number; + groupItemId: number; + framework: RollbarFrameworkId; + totalOccurrences: number; + level: RollbarLevel; + counter: number; + lastModifiedBy: number; + firstOccurrenceId: number; + activatingOccurrenceId: number; + lastResolvedTimestamp: number; +}; + +// @public (undocumented) +export type RollbarItemCount = { + timestamp: number; + count: number; +}; + +// @public (undocumented) +export type RollbarItemsResponse = { + items: RollbarItem[]; + page: number; + totalCount: number; +}; + +// @public (undocumented) +export enum RollbarLevel { + // (undocumented) + critical = 50, + // (undocumented) + debug = 10, + // (undocumented) + error = 40, + // (undocumented) + info = 20, + // (undocumented) + warning = 30, +} + +// @public (undocumented) +export enum RollbarPlatformId { + // (undocumented) + 'google-app-engine' = 6, + // (undocumented) + 'android' = 3, + // (undocumented) + 'browser' = 1, + // (undocumented) + 'client' = 7, + // (undocumented) + 'flash' = 2, + // (undocumented) + 'heroku' = 5, + // (undocumented) + 'ios' = 4, + // (undocumented) + 'unknown' = 0, +} + // @public (undocumented) const rollbarPlugin: BackstagePlugin< { @@ -97,9 +200,43 @@ const rollbarPlugin: BackstagePlugin< export { rollbarPlugin as plugin }; export { rollbarPlugin }; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const Router: (_props: Props) => JSX.Element; +export type RollbarProject = { + id: number; + name: string; + accountId: number; + status: 'enabled' | string; +}; + +// @public (undocumented) +export type RollbarProjectAccessToken = { + projectId: number; + name: string; + scopes: RollbarProjectAccessTokenScope[]; + accessToken: string; + status: 'enabled' | string; +}; + +// @public (undocumented) +export type RollbarProjectAccessTokenScope = 'read' | 'write'; + +// @public (undocumented) +export type RollbarTopActiveItem = { + item: { + id: number; + counter: number; + environment: RollbarEnvironment; + framework: RollbarFrameworkId; + lastOccurrenceTimestamp: number; + level: number; + occurrences: number; + projectId: number; + title: string; + uniqueOccurrences: number; + }; + counts: number[]; +}; + +// @public (undocumented) +export const Router: () => JSX.Element; ``` diff --git a/plugins/rollbar/src/api/RollbarApi.ts b/plugins/rollbar/src/api/RollbarApi.ts index 3da52338ec..d5d6fe6aca 100644 --- a/plugins/rollbar/src/api/RollbarApi.ts +++ b/plugins/rollbar/src/api/RollbarApi.ts @@ -21,10 +21,12 @@ import { } from './types'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const rollbarApiRef = createApiRef({ id: 'plugin.rollbar.service', }); +/** @public */ export interface RollbarApi { getAllProjects(): Promise; getProject(projectName: string): Promise; diff --git a/plugins/rollbar/src/api/RollbarClient.ts b/plugins/rollbar/src/api/RollbarClient.ts index b87a6c8cc8..71c9f74ff0 100644 --- a/plugins/rollbar/src/api/RollbarClient.ts +++ b/plugins/rollbar/src/api/RollbarClient.ts @@ -22,6 +22,7 @@ import { } from './types'; import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; +/** @public */ export class RollbarClient implements RollbarApi { private readonly discoveryApi: DiscoveryApi; private readonly identityApi: IdentityApi; diff --git a/plugins/rollbar/src/api/index.ts b/plugins/rollbar/src/api/index.ts index 56c23f07dd..882024f90f 100644 --- a/plugins/rollbar/src/api/index.ts +++ b/plugins/rollbar/src/api/index.ts @@ -16,3 +16,4 @@ export * from './RollbarApi'; export * from './RollbarClient'; +export * from './types'; diff --git a/plugins/rollbar/src/api/types.ts b/plugins/rollbar/src/api/types.ts index 549bdbbbb7..0a8f718a26 100644 --- a/plugins/rollbar/src/api/types.ts +++ b/plugins/rollbar/src/api/types.ts @@ -16,9 +16,13 @@ // TODO: Make this shared/dry with backend +/** @public */ export type RollbarProjectAccessTokenScope = 'read' | 'write'; + +/** @public */ export type RollbarEnvironment = 'production' | string; +/** @public */ export enum RollbarLevel { debug = 10, info = 20, @@ -27,6 +31,7 @@ export enum RollbarLevel { critical = 50, } +/** @public */ export enum RollbarFrameworkId { 'unknown' = 0, 'rails' = 1, @@ -49,6 +54,7 @@ export enum RollbarFrameworkId { 'rq' = 18, } +/** @public */ export enum RollbarPlatformId { 'unknown' = 0, 'browser' = 1, @@ -60,6 +66,7 @@ export enum RollbarPlatformId { 'client' = 7, } +/** @public */ export type RollbarProject = { id: number; name: string; @@ -67,6 +74,7 @@ export type RollbarProject = { status: 'enabled' | string; }; +/** @public */ export type RollbarProjectAccessToken = { projectId: number; name: string; @@ -75,6 +83,7 @@ export type RollbarProjectAccessToken = { status: 'enabled' | string; }; +/** @public */ export type RollbarItem = { publicItemId: number; integrationsData: null; @@ -107,17 +116,20 @@ export type RollbarItem = { lastResolvedTimestamp: number; }; +/** @public */ export type RollbarItemsResponse = { items: RollbarItem[]; page: number; totalCount: number; }; +/** @public */ export type RollbarItemCount = { timestamp: number; count: number; }; +/** @public */ export type RollbarTopActiveItem = { item: { id: number; diff --git a/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx b/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx index 626b3442e5..cde396674e 100644 --- a/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx +++ b/plugins/rollbar/src/components/EntityPageRollbar/EntityPageRollbar.tsx @@ -18,6 +18,7 @@ import { useEntity } from '@backstage/plugin-catalog-react'; import React from 'react'; import { RollbarProject } from '../RollbarProject/RollbarProject'; +/** @public */ export const EntityPageRollbar = () => { const { entity } = useEntity(); diff --git a/plugins/rollbar/src/components/Router.tsx b/plugins/rollbar/src/components/Router.tsx index a11acb379c..9cd63e74aa 100644 --- a/plugins/rollbar/src/components/Router.tsx +++ b/plugins/rollbar/src/components/Router.tsx @@ -22,12 +22,12 @@ import { ROLLBAR_ANNOTATION } from '../constants'; import { EntityPageRollbar } from './EntityPageRollbar/EntityPageRollbar'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; +/** @public */ export const isPluginApplicableToEntity = (entity: Entity) => Boolean(entity.metadata.annotations?.[ROLLBAR_ANNOTATION]); -type Props = {}; - -export const Router = (_props: Props) => { +/** @public */ +export const Router = () => { const { entity } = useEntity(); if (!isPluginApplicableToEntity(entity)) { diff --git a/plugins/rollbar/src/constants.ts b/plugins/rollbar/src/constants.ts index 8697c3239f..42031ddcef 100644 --- a/plugins/rollbar/src/constants.ts +++ b/plugins/rollbar/src/constants.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +/** @public */ export const ROLLBAR_ANNOTATION = 'rollbar.com/project-slug'; diff --git a/plugins/rollbar/src/plugin.ts b/plugins/rollbar/src/plugin.ts index 3ca456058f..de3dd38b1a 100644 --- a/plugins/rollbar/src/plugin.ts +++ b/plugins/rollbar/src/plugin.ts @@ -29,6 +29,7 @@ export const rootRouteRef = createRouteRef({ id: 'rollbar', }); +/** @public */ export const rollbarPlugin = createPlugin({ id: 'rollbar', apis: [ @@ -44,6 +45,7 @@ export const rollbarPlugin = createPlugin({ }, }); +/** @public */ export const EntityRollbarContent = rollbarPlugin.provide( createRoutableExtension({ name: 'EntityRollbarContent', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index ca710e1885..0683c1efbd 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -233,7 +233,6 @@ const ALLOW_WARNINGS = [ 'plugins/newrelic', 'plugins/newrelic-dashboard', 'plugins/pagerduty', - 'plugins/rollbar', 'plugins/rollbar-backend', 'plugins/search-backend-module-pg', 'plugins/sentry', From 17f07f307041c4c08c6678e8f19c50075d060ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 09:56:50 +0200 Subject: [PATCH 127/275] rollbar-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/rollbar-backend/api-report.md | 175 ++++++++++++++++-- plugins/rollbar-backend/src/api/RollbarApi.ts | 2 + plugins/rollbar-backend/src/api/index.ts | 3 +- plugins/rollbar-backend/src/api/types.ts | 12 ++ plugins/rollbar-backend/src/service/router.ts | 2 + scripts/api-extractor.ts | 1 - 6 files changed, 180 insertions(+), 15 deletions(-) diff --git a/plugins/rollbar-backend/api-report.md b/plugins/rollbar-backend/api-report.md index 1c0800a393..58a5fb0252 100644 --- a/plugins/rollbar-backend/api-report.md +++ b/plugins/rollbar-backend/api-report.md @@ -7,13 +7,9 @@ import { Config } from '@backstage/config'; import express from 'express'; import { Logger } from 'winston'; -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "getRequestHeaders" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function getRequestHeaders(token: string): { headers: { @@ -21,8 +17,6 @@ export function getRequestHeaders(token: string): { }; }; -// Warning: (ae-missing-release-tag) "RollbarApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class RollbarApi { constructor(accessToken: string, logger: Logger); @@ -100,8 +94,168 @@ export class RollbarApi { >; } -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type RollbarEnvironment = 'production' | string; + +// @public (undocumented) +export enum RollbarFrameworkId { + // (undocumented) + 'browser-js' = 7, + // (undocumented) + 'node-js' = 4, + // (undocumented) + 'rollbar-system' = 8, + // (undocumented) + 'android' = 9, + // (undocumented) + 'celery' = 17, + // (undocumented) + 'django' = 2, + // (undocumented) + 'flask' = 16, + // (undocumented) + 'ios' = 10, + // (undocumented) + 'logentries' = 12, + // (undocumented) + 'mailgun' = 11, + // (undocumented) + 'php' = 6, + // (undocumented) + 'pylons' = 5, + // (undocumented) + 'pyramid' = 3, + // (undocumented) + 'python' = 13, + // (undocumented) + 'rails' = 1, + // (undocumented) + 'rq' = 18, + // (undocumented) + 'ruby' = 14, + // (undocumented) + 'sidekiq' = 15, + // (undocumented) + 'unknown' = 0, +} + +// @public (undocumented) +export type RollbarItem = { + publicItemId: number; + integrationsData: null; + levelLock: number; + controllingId: number; + lastActivatedTimestamp: number; + assignedUserId: number; + groupStatus: number; + hash: string; + id: number; + environment: RollbarEnvironment; + titleLock: number; + title: string; + lastOccurrenceId: number; + lastOccurrenceTimestamp: number; + platform: RollbarPlatformId; + firstOccurrenceTimestamp: number; + project_id: number; + resolvedInVersion: string; + status: 'enabled' | string; + uniqueOccurrences: number; + groupItemId: number; + framework: RollbarFrameworkId; + totalOccurrences: number; + level: RollbarLevel; + counter: number; + lastModifiedBy: number; + firstOccurrenceId: number; + activatingOccurrenceId: number; + lastResolvedTimestamp: number; +}; + +// @public (undocumented) +export type RollbarItemCount = { + timestamp: number; + count: number; +}; + +// @public (undocumented) +export type RollbarItemsResponse = { + items: RollbarItem[]; + page: number; + totalCount: number; +}; + +// @public (undocumented) +export enum RollbarLevel { + // (undocumented) + critical = 50, + // (undocumented) + debug = 10, + // (undocumented) + error = 40, + // (undocumented) + info = 20, + // (undocumented) + warning = 30, +} + +// @public (undocumented) +export enum RollbarPlatformId { + // (undocumented) + 'google-app-engine' = 6, + // (undocumented) + 'android' = 3, + // (undocumented) + 'browser' = 1, + // (undocumented) + 'client' = 7, + // (undocumented) + 'flash' = 2, + // (undocumented) + 'heroku' = 5, + // (undocumented) + 'ios' = 4, + // (undocumented) + 'unknown' = 0, +} + +// @public (undocumented) +export type RollbarProject = { + id: number; + name: string; + accountId: number; + status: 'enabled' | string; +}; + +// @public (undocumented) +export type RollbarProjectAccessToken = { + projectId: number; + name: string; + scopes: RollbarProjectAccessTokenScope[]; + accessToken: string; + status: 'enabled' | string; +}; + +// @public (undocumented) +export type RollbarProjectAccessTokenScope = 'read' | 'write'; + +// @public (undocumented) +export type RollbarTopActiveItem = { + item: { + id: number; + counter: number; + environment: RollbarEnvironment; + framework: RollbarFrameworkId; + lastOccurrenceTimestamp: number; + level: number; + occurrences: number; + projectId: number; + title: string; + uniqueOccurrences: number; + }; + counts: number[]; +}; + // @public (undocumented) export interface RouterOptions { // (undocumented) @@ -111,9 +265,4 @@ export interface RouterOptions { // (undocumented) rollbarApi?: RollbarApi; } - -// Warnings were encountered during analysis: -// -// src/api/RollbarApi.d.ts:21:9 - (ae-forgotten-export) The symbol "RollbarItem" needs to be exported by the entry point index.d.ts -// src/api/RollbarApi.d.ts:32:13 - (ae-forgotten-export) The symbol "RollbarFrameworkId" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/rollbar-backend/src/api/RollbarApi.ts b/plugins/rollbar-backend/src/api/RollbarApi.ts index 245164b531..59394d7ad0 100644 --- a/plugins/rollbar-backend/src/api/RollbarApi.ts +++ b/plugins/rollbar-backend/src/api/RollbarApi.ts @@ -30,6 +30,7 @@ const baseUrl = 'https://api.rollbar.com/api/1'; const buildUrl = (url: string) => `${baseUrl}${url}`; +/** @public */ export class RollbarApi { private projectMap: ProjectMetadataMap | undefined; @@ -165,6 +166,7 @@ export class RollbarApi { } } +/** @public */ export function getRequestHeaders(token: string) { return { headers: { diff --git a/plugins/rollbar-backend/src/api/index.ts b/plugins/rollbar-backend/src/api/index.ts index a2ce96e16a..08d6c4b061 100644 --- a/plugins/rollbar-backend/src/api/index.ts +++ b/plugins/rollbar-backend/src/api/index.ts @@ -14,4 +14,5 @@ * limitations under the License. */ -export { RollbarApi, getRequestHeaders } from './RollbarApi'; +export { getRequestHeaders, RollbarApi } from './RollbarApi'; +export * from './types'; diff --git a/plugins/rollbar-backend/src/api/types.ts b/plugins/rollbar-backend/src/api/types.ts index 1133f84b67..a1a6202656 100644 --- a/plugins/rollbar-backend/src/api/types.ts +++ b/plugins/rollbar-backend/src/api/types.ts @@ -16,9 +16,13 @@ // TODO: Make this re-usable with backend +/** @public */ export type RollbarProjectAccessTokenScope = 'read' | 'write'; + +/** @public */ export type RollbarEnvironment = 'production' | string; +/** @public */ export enum RollbarLevel { debug = 10, info = 20, @@ -27,6 +31,7 @@ export enum RollbarLevel { critical = 50, } +/** @public */ export enum RollbarFrameworkId { 'unknown' = 0, 'rails' = 1, @@ -49,6 +54,7 @@ export enum RollbarFrameworkId { 'rq' = 18, } +/** @public */ export enum RollbarPlatformId { 'unknown' = 0, 'browser' = 1, @@ -60,6 +66,7 @@ export enum RollbarPlatformId { 'client' = 7, } +/** @public */ export type RollbarProject = { id: number; name: string; @@ -67,6 +74,7 @@ export type RollbarProject = { status: 'enabled' | string; }; +/** @public */ export type RollbarProjectAccessToken = { projectId: number; name: string; @@ -75,6 +83,7 @@ export type RollbarProjectAccessToken = { status: 'enabled' | string; }; +/** @public */ export type RollbarItem = { publicItemId: number; integrationsData: null; @@ -107,17 +116,20 @@ export type RollbarItem = { lastResolvedTimestamp: number; }; +/** @public */ export type RollbarItemsResponse = { items: RollbarItem[]; page: number; totalCount: number; }; +/** @public */ export type RollbarItemCount = { timestamp: number; count: number; }; +/** @public */ export type RollbarTopActiveItem = { item: { id: number; diff --git a/plugins/rollbar-backend/src/service/router.ts b/plugins/rollbar-backend/src/service/router.ts index 6d578af29f..a5646fdf06 100644 --- a/plugins/rollbar-backend/src/service/router.ts +++ b/plugins/rollbar-backend/src/service/router.ts @@ -21,12 +21,14 @@ import { errorHandler } from '@backstage/backend-common'; import { Config } from '@backstage/config'; import { RollbarApi } from '../api'; +/** @public */ export interface RouterOptions { rollbarApi?: RollbarApi; logger: Logger; config: Config; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 0683c1efbd..ed0fb5ad8e 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -233,7 +233,6 @@ const ALLOW_WARNINGS = [ 'plugins/newrelic', 'plugins/newrelic-dashboard', 'plugins/pagerduty', - 'plugins/rollbar-backend', 'plugins/search-backend-module-pg', 'plugins/sentry', 'plugins/shortcuts', From a3f9d8557dd69f667683d9d910d393607e866f1d Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 09:58:20 +0200 Subject: [PATCH 128/275] chore: enter pre-release Signed-off-by: blam --- .changeset/pre.json | 175 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..172b96d8f6 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,175 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "example-app": "0.2.74", + "@backstage/app-defaults": "1.0.5", + "example-backend": "0.2.74", + "@backstage/backend-app-api": "0.2.0", + "@backstage/backend-common": "0.15.0", + "@backstage/backend-defaults": "0.1.0", + "example-backend-next": "0.0.2", + "@backstage/backend-plugin-api": "0.1.1", + "@backstage/backend-tasks": "0.3.4", + "@backstage/backend-test-utils": "0.1.27", + "@backstage/catalog-client": "1.0.4", + "@backstage/catalog-model": "1.1.0", + "@backstage/cli": "0.18.1", + "@backstage/cli-common": "0.1.9", + "@backstage/codemods": "0.1.38", + "@backstage/config": "1.0.1", + "@backstage/config-loader": "1.1.3", + "@backstage/core-app-api": "1.0.5", + "@backstage/core-components": "0.11.0", + "@backstage/core-plugin-api": "1.0.5", + "@backstage/create-app": "0.4.30", + "@backstage/dev-utils": "1.0.5", + "e2e-test": "0.2.0", + "@backstage/errors": "1.1.0", + "@backstage/integration": "1.3.0", + "@backstage/integration-react": "1.1.3", + "@backstage/release-manifests": "0.0.5", + "@techdocs/cli": "1.2.0", + "techdocs-cli-embedded-app": "0.2.73", + "@backstage/test-utils": "1.1.3", + "@backstage/theme": "0.2.16", + "@backstage/types": "1.0.0", + "@backstage/version-bridge": "1.0.1", + "@backstage/plugin-adr": "0.2.0", + "@backstage/plugin-adr-backend": "0.2.0", + "@backstage/plugin-adr-common": "0.2.0", + "@backstage/plugin-airbrake": "0.3.8", + "@backstage/plugin-airbrake-backend": "0.2.8", + "@backstage/plugin-allure": "0.1.24", + "@backstage/plugin-analytics-module-ga": "0.1.19", + "@backstage/plugin-apache-airflow": "0.2.1", + "@backstage/plugin-api-docs": "0.8.8", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.0", + "@backstage/plugin-apollo-explorer": "0.1.1", + "@backstage/plugin-app-backend": "0.3.35", + "@backstage/plugin-auth-backend": "0.15.1", + "@backstage/plugin-auth-node": "0.2.4", + "@backstage/plugin-azure-devops": "0.1.24", + "@backstage/plugin-azure-devops-backend": "0.3.14", + "@backstage/plugin-azure-devops-common": "0.2.4", + "@backstage/plugin-badges": "0.2.32", + "@backstage/plugin-badges-backend": "0.1.29", + "@backstage/plugin-bazaar": "0.1.23", + "@backstage/plugin-bazaar-backend": "0.1.19", + "@backstage/plugin-bitbucket-cloud-common": "0.1.2", + "@backstage/plugin-bitrise": "0.1.35", + "@backstage/plugin-catalog": "1.5.0", + "@backstage/plugin-catalog-backend": "1.3.1", + "@backstage/plugin-catalog-backend-module-aws": "0.1.8", + "@backstage/plugin-catalog-backend-module-azure": "0.1.6", + "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.2", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.2", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.0", + "@backstage/plugin-catalog-backend-module-gerrit": "0.1.3", + "@backstage/plugin-catalog-backend-module-github": "0.1.6", + "@backstage/plugin-catalog-backend-module-gitlab": "0.1.6", + "@backstage/plugin-catalog-backend-module-ldap": "0.5.2", + "@backstage/plugin-catalog-backend-module-msgraph": "0.4.1", + "@backstage/plugin-catalog-backend-module-openapi": "0.1.1", + "@backstage/plugin-catalog-common": "1.0.5", + "@internal/plugin-catalog-customized": "0.0.1", + "@backstage/plugin-catalog-graph": "0.2.20", + "@backstage/plugin-catalog-graphql": "0.3.12", + "@backstage/plugin-catalog-import": "0.8.11", + "@backstage/plugin-catalog-node": "1.0.1", + "@backstage/plugin-catalog-react": "1.1.3", + "@backstage/plugin-cicd-statistics": "0.1.10", + "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.4", + "@backstage/plugin-circleci": "0.3.8", + "@backstage/plugin-cloudbuild": "0.3.8", + "@backstage/plugin-code-climate": "0.1.8", + "@backstage/plugin-code-coverage": "0.2.1", + "@backstage/plugin-code-coverage-backend": "0.2.1", + "@backstage/plugin-codescene": "0.1.3", + "@backstage/plugin-config-schema": "0.1.31", + "@backstage/plugin-cost-insights": "0.11.30", + "@backstage/plugin-cost-insights-common": "0.1.1", + "@backstage/plugin-dynatrace": "0.1.2", + "@internal/plugin-todo-list": "1.0.4", + "@internal/plugin-todo-list-backend": "1.0.4", + "@internal/plugin-todo-list-common": "1.0.3", + "@backstage/plugin-explore": "0.3.39", + "@backstage/plugin-explore-react": "0.0.20", + "@backstage/plugin-firehydrant": "0.1.25", + "@backstage/plugin-fossa": "0.2.40", + "@backstage/plugin-gcalendar": "0.3.4", + "@backstage/plugin-gcp-projects": "0.3.27", + "@backstage/plugin-git-release-manager": "0.3.21", + "@backstage/plugin-github-actions": "0.5.8", + "@backstage/plugin-github-deployments": "0.1.39", + "@backstage/plugin-github-issues": "0.1.0", + "@backstage/plugin-github-pull-requests-board": "0.1.2", + "@backstage/plugin-gitops-profiles": "0.3.26", + "@backstage/plugin-gocd": "0.1.14", + "@backstage/plugin-graphiql": "0.2.40", + "@backstage/plugin-graphql-backend": "0.1.25", + "@backstage/plugin-home": "0.4.24", + "@backstage/plugin-ilert": "0.1.34", + "@backstage/plugin-jenkins": "0.7.7", + "@backstage/plugin-jenkins-backend": "0.1.25", + "@backstage/plugin-jenkins-common": "0.1.7", + "@backstage/plugin-kafka": "0.3.8", + "@backstage/plugin-kafka-backend": "0.2.28", + "@backstage/plugin-kubernetes": "0.7.1", + "@backstage/plugin-kubernetes-backend": "0.7.1", + "@backstage/plugin-kubernetes-common": "0.4.1", + "@backstage/plugin-lighthouse": "0.3.8", + "@backstage/plugin-newrelic": "0.3.26", + "@backstage/plugin-newrelic-dashboard": "0.2.1", + "@backstage/plugin-org": "0.5.8", + "@backstage/plugin-pagerduty": "0.5.1", + "@backstage/plugin-periskop": "0.1.6", + "@backstage/plugin-periskop-backend": "0.1.6", + "@backstage/plugin-permission-backend": "0.5.10", + "@backstage/plugin-permission-common": "0.6.3", + "@backstage/plugin-permission-node": "0.6.4", + "@backstage/plugin-permission-react": "0.4.4", + "@backstage/plugin-proxy-backend": "0.2.29", + "@backstage/plugin-rollbar": "0.4.8", + "@backstage/plugin-rollbar-backend": "0.1.32", + "@backstage/plugin-scaffolder": "1.5.0", + "@backstage/plugin-scaffolder-backend": "1.5.0", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.10", + "@backstage/plugin-scaffolder-backend-module-rails": "0.4.3", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.8", + "@backstage/plugin-scaffolder-common": "1.1.2", + "@backstage/plugin-search": "1.0.1", + "@backstage/plugin-search-backend": "1.0.1", + "@backstage/plugin-search-backend-module-elasticsearch": "1.0.1", + "@backstage/plugin-search-backend-module-pg": "0.3.6", + "@backstage/plugin-search-backend-node": "1.0.1", + "@backstage/plugin-search-common": "1.0.0", + "@backstage/plugin-search-react": "1.0.1", + "@backstage/plugin-sentry": "0.4.1", + "@backstage/plugin-shortcuts": "0.3.0", + "@backstage/plugin-sonarqube": "0.4.0", + "@backstage/plugin-sonarqube-backend": "0.1.0", + "@backstage/plugin-splunk-on-call": "0.3.32", + "@backstage/plugin-stack-overflow": "0.1.4", + "@backstage/plugin-stack-overflow-backend": "0.1.4", + "@backstage/plugin-tech-insights": "0.2.4", + "@backstage/plugin-tech-insights-backend": "0.5.1", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.19", + "@backstage/plugin-tech-insights-common": "0.2.6", + "@backstage/plugin-tech-insights-node": "0.3.3", + "@backstage/plugin-tech-radar": "0.5.15", + "@backstage/plugin-techdocs": "1.3.1", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.3", + "@backstage/plugin-techdocs-backend": "1.2.1", + "@backstage/plugin-techdocs-module-addons-contrib": "1.0.3", + "@backstage/plugin-techdocs-node": "1.3.0", + "@backstage/plugin-techdocs-react": "1.0.3", + "@backstage/plugin-todo": "0.2.10", + "@backstage/plugin-todo-backend": "0.1.32", + "@backstage/plugin-user-settings": "0.4.7", + "@backstage/plugin-vault": "0.1.2", + "@backstage/plugin-vault-backend": "0.2.1", + "@backstage/plugin-xcmetrics": "0.2.28" + }, + "changesets": [] +} From 37bfd1a4dd88b4f7283583005857fb39378e94c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 10:21:26 +0200 Subject: [PATCH 129/275] sentry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/sentry/api-report.md | 57 +++++++++++-------- plugins/sentry/src/api/index.ts | 9 ++- plugins/sentry/src/api/mock/mock-api.ts | 3 + plugins/sentry/src/api/sentry-issue.ts | 14 +++-- .../SentryIssuesTable/SentryIssuesTable.tsx | 7 +-- plugins/sentry/src/extensions.tsx | 20 +++---- plugins/sentry/src/index.ts | 1 + scripts/api-extractor.ts | 1 - 8 files changed, 68 insertions(+), 44 deletions(-) diff --git a/plugins/sentry/api-report.md b/plugins/sentry/api-report.md index bd77c46aa6..2a1b041546 100644 --- a/plugins/sentry/api-report.md +++ b/plugins/sentry/api-report.md @@ -14,28 +14,18 @@ import { InfoCardVariants } from '@backstage/core-components'; import { Options } from '@material-table/core'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-forgotten-export) The symbol "SentryPageProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EntitySentryCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntitySentryCard: ({ - statsFor, - tableOptions, -}: SentryPageProps) => JSX.Element; +export const EntitySentryCard: (props: SentryPageProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntitySentryContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const EntitySentryContent: ({ - statsFor, - tableOptions, -}: SentryPageProps) => JSX.Element; +export const EntitySentryContent: (props: SentryPageProps) => JSX.Element; + +// @public (undocumented) +export type EventPoint = number[]; // @public export const isSentryAvailable: (entity: Entity) => boolean; -// Warning: (ae-missing-release-tag) "MockSentryApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class MockSentryApi implements SentryApi { // (undocumented) @@ -74,11 +64,14 @@ export interface SentryApi { ): Promise; } +// @public (undocumented) +export type SentryApiError = { + detail: string; +}; + // @public (undocumented) export const sentryApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "SentryIssue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type SentryIssue = { platform: SentryPlatform; @@ -113,6 +106,14 @@ export type SentryIssue = { statusDetails: any; }; +// @public (undocumented) +export type SentryIssueMetadata = { + function?: string; + type?: string; + value?: string; + filename?: string; +}; + // @public (undocumented) export const SentryIssuesWidget: (props: { entity: Entity; @@ -122,6 +123,15 @@ export const SentryIssuesWidget: (props: { query?: string; }) => JSX.Element; +// @public (undocumented) +export type SentryPageProps = { + statsFor?: '24h' | '14d' | ''; + tableOptions?: Options; +}; + +// @public (undocumented) +export type SentryPlatform = 'javascript' | 'javascript-react' | string; + // @public (undocumented) const sentryPlugin: BackstagePlugin< { @@ -133,10 +143,11 @@ const sentryPlugin: BackstagePlugin< export { sentryPlugin as plugin }; export { sentryPlugin }; -// Warnings were encountered during analysis: -// -// src/api/sentry-issue.d.ts:16:5 - (ae-forgotten-export) The symbol "SentryPlatform" needs to be exported by the entry point index.d.ts -// src/api/sentry-issue.d.ts:21:9 - (ae-forgotten-export) The symbol "EventPoint" needs to be exported by the entry point index.d.ts -// src/api/sentry-issue.d.ts:31:5 - (ae-forgotten-export) The symbol "SentryIssueMetadata" needs to be exported by the entry point index.d.ts -// src/api/sentry-issue.d.ts:44:5 - (ae-forgotten-export) The symbol "SentryProject" needs to be exported by the entry point index.d.ts +// @public (undocumented) +export type SentryProject = { + platform: SentryPlatform; + slug: string; + id: string; + name: string; +}; ``` diff --git a/plugins/sentry/src/api/index.ts b/plugins/sentry/src/api/index.ts index 66ac07eda2..9ae6d4eea2 100644 --- a/plugins/sentry/src/api/index.ts +++ b/plugins/sentry/src/api/index.ts @@ -17,5 +17,12 @@ export * from './mock'; export type { SentryApi } from './sentry-api'; export { sentryApiRef } from './sentry-api'; -export type { SentryIssue } from './sentry-issue'; +export type { + EventPoint, + SentryApiError, + SentryIssue, + SentryIssueMetadata, + SentryPlatform, + SentryProject, +} from './sentry-issue'; export { ProductionSentryApi } from './production-api'; diff --git a/plugins/sentry/src/api/mock/mock-api.ts b/plugins/sentry/src/api/mock/mock-api.ts index af64d8656a..4f9f4254fc 100644 --- a/plugins/sentry/src/api/mock/mock-api.ts +++ b/plugins/sentry/src/api/mock/mock-api.ts @@ -30,9 +30,12 @@ function getMockIssue(): SentryIssue { stats: randomizedStats, }; } + function getMockIssues(number: number): SentryIssue[] { return new Array(number).fill(0).map(getMockIssue); } + +/** @public */ export class MockSentryApi implements SentryApi { fetchIssues(): Promise { return new Promise(resolve => { diff --git a/plugins/sentry/src/api/sentry-issue.ts b/plugins/sentry/src/api/sentry-issue.ts index ef0e99adb8..e25cf88829 100644 --- a/plugins/sentry/src/api/sentry-issue.ts +++ b/plugins/sentry/src/api/sentry-issue.ts @@ -14,24 +14,29 @@ * limitations under the License. */ -type SentryPlatform = 'javascript' | 'javascript-react' | string; +/** @public */ +export type SentryPlatform = 'javascript' | 'javascript-react' | string; -type EventPoint = number[]; +/** @public */ +export type EventPoint = number[]; -type SentryProject = { +/** @public */ +export type SentryProject = { platform: SentryPlatform; slug: string; id: string; name: string; }; -type SentryIssueMetadata = { +/** @public */ +export type SentryIssueMetadata = { function?: string; type?: string; value?: string; filename?: string; }; +/** @public */ export type SentryIssue = { platform: SentryPlatform; lastSeen: string; @@ -65,6 +70,7 @@ export type SentryIssue = { statusDetails: any; }; +/** @public */ export type SentryApiError = { detail: string; }; diff --git a/plugins/sentry/src/components/SentryIssuesTable/SentryIssuesTable.tsx b/plugins/sentry/src/components/SentryIssuesTable/SentryIssuesTable.tsx index e8e4c44a11..abe29efd7f 100644 --- a/plugins/sentry/src/components/SentryIssuesTable/SentryIssuesTable.tsx +++ b/plugins/sentry/src/components/SentryIssuesTable/SentryIssuesTable.tsx @@ -64,11 +64,8 @@ type SentryIssuesTableProps = { tableOptions: Options; }; -const SentryIssuesTable = ({ - sentryIssues, - statsFor, - tableOptions, -}: SentryIssuesTableProps) => { +const SentryIssuesTable = (props: SentryIssuesTableProps) => { + const { sentryIssues, statsFor, tableOptions } = props; return (
    ; }; +/** @public */ export const EntitySentryContent = sentryPlugin.provide( createRoutableExtension({ name: 'EntitySentryContent', @@ -35,7 +37,7 @@ export const EntitySentryContent = sentryPlugin.provide( component: () => import('./components/SentryIssuesWidget').then( ({ SentryIssuesWidget }) => { - const SentryPage = ({ statsFor, tableOptions }: SentryPageProps) => { + const SentryPage = (props: SentryPageProps) => { const { entity } = useEntity(); const defaultOptions: Options = { padding: 'dense', @@ -46,8 +48,8 @@ export const EntitySentryContent = sentryPlugin.provide( return ( ); }; @@ -57,6 +59,7 @@ export const EntitySentryContent = sentryPlugin.provide( }), ); +/** @public */ export const EntitySentryCard = sentryPlugin.provide( createComponentExtension({ name: 'EntitySentryCard', @@ -64,17 +67,14 @@ export const EntitySentryCard = sentryPlugin.provide( lazy: () => import('./components/SentryIssuesWidget').then( ({ SentryIssuesWidget }) => { - const SentryCard = ({ - statsFor, - tableOptions, - }: SentryPageProps) => { + const SentryCard = (props: SentryPageProps) => { const { entity } = useEntity(); return ( Date: Fri, 19 Aug 2022 10:21:53 +0200 Subject: [PATCH 130/275] chore: fixing tests by wrapping in act Signed-off-by: blam --- .../TemplateWizardPage/Stepper/Stepper.test.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx index 2b091883ae..90901f22c5 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { TemplateParameterSchema } from '../../../types'; import { Stepper } from './Stepper'; import { renderInTestApp } from '@backstage/test-utils'; -import { fireEvent } from '@testing-library/react'; +import { act, fireEvent } from '@testing-library/react'; describe('Stepper', () => { it('should render the step titles for each step of the manifest', async () => { @@ -53,7 +53,9 @@ describe('Stepper', () => { expect(getByText('Next')).toBeInTheDocument(); - await fireEvent.click(getByText('Next')); + await act(async () => { + await fireEvent.click(getByText('Next')); + }); expect(getByText('Review')).toBeInTheDocument(); }); @@ -93,9 +95,13 @@ describe('Stepper', () => { target: { value: 'im a test value' }, }); - await fireEvent.click(getByText('Next')); + await act(async () => { + await fireEvent.click(getByText('Next')); + }); - await fireEvent.click(getByText('Back')); + await act(async () => { + await fireEvent.click(getByText('Back')); + }); expect(getByRole('textbox', { name: 'name' })).toHaveValue( 'im a test value', From c721cfc76124aadcf1c1f759ea92eb1c5f89ade1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 10:24:00 +0200 Subject: [PATCH 131/275] xcmetrics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/xcmetrics/api-report.md | 4 ---- plugins/xcmetrics/src/plugin.ts | 2 ++ scripts/api-extractor.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/xcmetrics/api-report.md b/plugins/xcmetrics/api-report.md index 373748e9e2..8dd87cc7d6 100644 --- a/plugins/xcmetrics/api-report.md +++ b/plugins/xcmetrics/api-report.md @@ -8,13 +8,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "XcmetricsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const XcmetricsPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "xcmetricsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const xcmetricsPlugin: BackstagePlugin< { diff --git a/plugins/xcmetrics/src/plugin.ts b/plugins/xcmetrics/src/plugin.ts index f6b7dd7e43..ffa72d1ff3 100644 --- a/plugins/xcmetrics/src/plugin.ts +++ b/plugins/xcmetrics/src/plugin.ts @@ -22,6 +22,7 @@ import { import { xcmetricsApiRef, XcmetricsClient } from './api'; import { rootRouteRef } from './routes'; +/** @public */ export const xcmetricsPlugin = createPlugin({ id: 'xcmetrics', routes: { @@ -40,6 +41,7 @@ export const xcmetricsPlugin = createPlugin({ ], }); +/** @public */ export const XcmetricsPage = xcmetricsPlugin.provide( createRoutableExtension({ name: 'XcmetricsPage', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index f2a71ad03f..974cdf88a5 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -238,7 +238,6 @@ const ALLOW_WARNINGS = [ 'plugins/splunk-on-call', 'plugins/tech-radar', 'plugins/user-settings', - 'plugins/xcmetrics', ]; async function resolvePackagePath( From f0dfda7f529c63fcde95cc31813e25f7746da67a Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Fri, 19 Aug 2022 10:35:04 +0200 Subject: [PATCH 132/275] integration/docs: Clarify GCS credentials discovery config requirement Signed-off-by: Johan Haals --- docs/integrations/google-cloud-storage/locations.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/integrations/google-cloud-storage/locations.md b/docs/integrations/google-cloud-storage/locations.md index e15cb6346c..1f0334ff17 100644 --- a/docs/integrations/google-cloud-storage/locations.md +++ b/docs/integrations/google-cloud-storage/locations.md @@ -36,6 +36,13 @@ Then make sure the environment variables `GCS_CLIENT_EMAIL` and Since this integration uses the Google Storage SDK, you can also choose to not provide any explicit credentials and let the SDK discover them automatically. +Please note that for this method to work you must add an empty `googleGcs` object to the `integrations` section in `app-config.yaml`. + +```yaml +integrations: + googleGcs: {} +``` + One of these discovery methods is to provide an environment variable called `GOOGLE_APPLICATION_CREDENTIALS` and set it to the file path of your JSON service account key. From ecfb68ab580448109204dcfb00ae4e3c747a2c21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:03:20 +0000 Subject: [PATCH 133/275] chore(deps): update dependency @types/lodash to v4.14.184 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 373978dc47..8077418833 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7119,9 +7119,9 @@ "@types/node" "*" "@types/lodash@^4.14.151", "@types/lodash@^4.14.173", "@types/lodash@^4.14.175": - version "4.14.183" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.183.tgz#1173e843e858cff5b997c234df2789a4a54c2374" - integrity sha512-UXavyuxzXKMqJPEpFPri6Ku5F9af6ZJXUneHhvQJxavrEjuHkFp2YnDWHcxJiG7hk8ZkWqjcyNeW1s/smZv5cw== + version "4.14.184" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe" + integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== "@types/long@^4.0.0", "@types/long@^4.0.1": version "4.0.2" From e69dce2f471de294d940e1a9debeabcfe4acba36 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:04:20 +0000 Subject: [PATCH 134/275] fix(deps): update dependency @roadiehq/backstage-plugin-github-pull-requests to v2.2.5 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 373978dc47..7929d444af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5932,9 +5932,9 @@ zustand "3.6.9" "@roadiehq/backstage-plugin-github-pull-requests@^2.0.0": - version "2.2.4" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.2.4.tgz#7df512d6f55cfccf448cf3abc58364e2544e7fab" - integrity sha512-oEJLxZ3L+GnWuVLFmxXNjeRthuJEV7u1EFbLthoW3XfR5vQ5oc81Su/3WF2rO2Atng1QkPpSPa7oXWff2NsJJw== + version "2.2.5" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.2.5.tgz#280fb55f6c2378cc8eb32e2acf25a0522a2ef110" + integrity sha512-8zK4uw5FhqfOwUF0oOp2cXsh+HQzsmmynN5WsLmir6v5CX6p8LPEZbb9aBDD2Gx2pC/s3776xQO95kCbizeUxg== dependencies: "@backstage/catalog-model" "^1.0.0" "@backstage/core-components" "^0.10.0" From 0da071f1347546078bd3554b0d615c3ec9e9aa8f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:13:29 +0000 Subject: [PATCH 135/275] fix(deps): update dependency @octokit/webhooks to v10.1.5 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 373978dc47..69c6628857 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5713,19 +5713,19 @@ resolved "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-3.0.0.tgz#4f4443605233f46abc5f85a857ba105095aa1181" integrity sha512-FAIyAchH9JUKXugKMC17ERAXM/56vVJekwXOON46pmUDYfU7uXB4cFY8yc8nYr5ABqVI7KjRKfFt3mZF7OcyUA== -"@octokit/webhooks-types@6.3.5": - version "6.3.5" - resolved "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.3.5.tgz#e0812abc74d27fd7443f28c0cfc527214bb5ee66" - integrity sha512-2QZkDXC3I3TO0mpI/VaqP+aeEvYm//Slkcsve24ezPCNA22HuekBaoEU92HF3WvciFEzWWv0e/E2SMVZcCaBZw== +"@octokit/webhooks-types@6.3.6": + version "6.3.6" + resolved "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.3.6.tgz#b211e42386463175ebc652c86d5c7433675986fc" + integrity sha512-x6yBtWobk20OhOiJ4VWsH3iJ/30IG+VoDWSgS4Tiyidi2KOiBS3bL+AJrNuq4OyNuWOM/FbHQTp6KEZs1oPD/g== "@octokit/webhooks@^10.0.0": - version "10.1.4" - resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.1.4.tgz#c16803312d6102425f464529ff52bccea03ea034" - integrity sha512-MVu56s7x9Me4gT/YpR1f2pzWDJNciTMdM3subCA5H8qZcvqInIdnssaxwLp1ep/JbeFhvkYWNHfPeLtwdGg3rQ== + version "10.1.5" + resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.1.5.tgz#ba79b49ef0047a3cae7885387c5f20d4b341cd41" + integrity sha512-sQkxM6l9HdG1vsHFj2T/o8SnCPDDxovcs0rsSd4UR5jJFNPCPIBRmFNVHfM37nncLKuTwIpmMeePphNf1k6Waw== dependencies: "@octokit/request-error" "^3.0.0" "@octokit/webhooks-methods" "^3.0.0" - "@octokit/webhooks-types" "6.3.5" + "@octokit/webhooks-types" "6.3.6" aggregate-error "^3.1.0" "@open-draft/until@^1.0.3": From 784673638a59a4b56fa8e03cba882d7bfb4c9b07 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 11:44:56 +0200 Subject: [PATCH 136/275] chore: reworking how we do the review step Signed-off-by: blam --- .../Stepper/ReviewState.test.tsx | 61 +++++++++++++++++++ .../Stepper/ReviewState.tsx | 58 ++++++++++++++++++ .../TemplateWizardPage/Stepper/Stepper.tsx | 54 +++++++++------- .../Stepper/useTemplateSchema.ts | 17 +++--- 4 files changed, 158 insertions(+), 32 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx new file mode 100644 index 0000000000..b77d0d0c59 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx @@ -0,0 +1,61 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { ReviewState } from './ReviewState'; +import { render } from '@testing-library/react'; + +describe('ReviewState', () => { + it('should render the text as normal with no options', () => { + const formState = { + name: 'John Doe', + test: 'bob', + }; + + const { getByRole } = render( + , + ); + + expect(getByRole('row', { name: 'Name John Doe' })).toBeInTheDocument(); + expect(getByRole('row', { name: 'Test bob' })).toBeInTheDocument(); + }); + + it('should mask password ui:fields', () => { + const formState = { + name: 'John Doe', + test: 'bob', + }; + + const schemas = [ + { + mergedSchema: { + type: 'object', + properties: { + name: { + type: 'string', + 'ui:widget': 'password', + }, + }, + }, + }, + ]; + + const { getByRole } = render( + , + ); + + expect(getByRole('row', { name: 'Name ******' })).toBeInTheDocument(); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx new file mode 100644 index 0000000000..4889b24483 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx @@ -0,0 +1,58 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { StructuredMetadataTable } from '@backstage/core-components'; +import { JsonObject } from '@backstage/types'; +import { ParsedTemplateSchema } from './useTemplateSchema'; +import { Draft07 as JSONSchema } from 'json-schema-library'; + +interface ReviewStateProps { + schemas: ParsedTemplateSchema[]; + formState: JsonObject; +} + +export const ReviewState = (props: ReviewStateProps) => { + const reviewData = Object.fromEntries( + Object.entries(props.formState).map(([key, value]) => { + for (const step of props.schemas) { + const parsedSchema = new JSONSchema(step.mergedSchema); + const definitionInSchema = parsedSchema.getSchema( + `#/${key}`, + props.formState, + ); + if (definitionInSchema) { + if (definitionInSchema['ui:widget'] === 'password') { + return [key, '******']; + } + + const backstageReviewOptions = + definitionInSchema['ui:backstage']?.review; + + if (backstageReviewOptions) { + if (backstageReviewOptions.mask) { + return [key, backstageReviewOptions.mask]; + } + if (!backstageReviewOptions.show) { + return []; + } + } + } + } + return [key, value]; + }), + ); + return ; +}; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index b85a1e1f5d..80926e5909 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -29,6 +29,7 @@ import { FieldExtensionOptions } from '../../../extensions'; import { TemplateParameterSchema } from '../../../types'; import { createAsyncValidators } from './createAsyncValidators'; import { useTemplateSchema } from './useTemplateSchema'; +import { ReviewState } from './ReviewState'; const useStyles = makeStyles(theme => ({ backButton: { @@ -74,7 +75,7 @@ export const Stepper = (props: StepperProps) => { }, [props.extensions]); const validation = useMemo(() => { - const { mergedSchema } = steps[activeStep]; + const { mergedSchema } = steps[activeStep] ?? {}; return createAsyncValidators(mergedSchema, validators, { apiHolder, }); @@ -112,30 +113,37 @@ export const Stepper = (props: StepperProps) => { {step.title} ))} + + Review +
    - -
    - - -
    - + {activeStep < steps.length ? ( +
    +
    + + +
    + + ) : ( + + )}
    ); diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts index 0482d89503..dc23a8a49c 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts @@ -19,17 +19,16 @@ import { UiSchema } from '@rjsf/core'; import { TemplateParameterSchema } from '../../../types'; import { extractSchemaFromStep } from './schema'; +export interface ParsedTemplateSchema { + uiSchema: UiSchema; + mergedSchema: JsonObject; + schema: JsonObject; + title: string; + description?: string; +} export const useTemplateSchema = ( manifest: TemplateParameterSchema, -): { - steps: { - uiSchema: UiSchema; - mergedSchema: JsonObject; - schema: JsonObject; - title: string; - description?: string; - }[]; -} => { +): { steps: ParsedTemplateSchema } => { const featureFlags = useApi(featureFlagsApiRef); const steps = manifest.steps.map(({ title, description, schema }) => ({ title, From 2dd66bfe2b5b291dc3ddca9a89482420bd621979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 11:50:00 +0200 Subject: [PATCH 137/275] home MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/home/api-report.md | 71 +++++++++++-------- .../home/src/assets/TemplateBackstageLogo.tsx | 17 ++--- .../src/assets/TemplateBackstageLogoIcon.tsx | 1 + plugins/home/src/components/SettingsModal.tsx | 1 + plugins/home/src/extensions.tsx | 15 +++- .../HeaderWorldClock/HeaderWorldClock.tsx | 1 + .../homePageComponents/Toolkit/Content.tsx | 18 ++--- .../homePageComponents/Toolkit/Context.tsx | 1 + .../src/homePageComponents/Toolkit/index.ts | 1 + plugins/home/src/homePageComponents/index.ts | 3 +- plugins/home/src/index.ts | 9 ++- plugins/home/src/plugin.ts | 2 +- scripts/api-extractor.ts | 1 - 13 files changed, 82 insertions(+), 59 deletions(-) diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md index 0870a23ba7..cbd36cd627 100644 --- a/plugins/home/api-report.md +++ b/plugins/home/api-report.md @@ -11,8 +11,11 @@ import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "ClockConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type CardExtensionProps = ComponentRenderer & { + title?: string; +} & T; + // @public (undocumented) export type ClockConfig = { label: string; @@ -29,6 +32,14 @@ export const ComponentAccordion: (props: { ContextProvider?: ((props: any) => JSX.Element) | undefined; }) => JSX.Element; +// @public (undocumented) +export type ComponentParts = { + Content: (props?: any) => JSX.Element; + Actions?: () => JSX.Element; + Settings?: () => JSX.Element; + ContextProvider?: (props: any) => JSX.Element; +}; + // @public (undocumented) export type ComponentRenderer = { Renderer?: (props: RendererProps) => JSX.Element; @@ -50,8 +61,6 @@ export const ComponentTabs: (props: { }[]; }) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "CardExtensionProps" needs to be exported by the entry point index.d.ts -// // @public export function createCardExtension(options: { title: string; @@ -79,27 +88,19 @@ export const HomepageCompositionRoot: (props: { // @public (undocumented) export const HomePageRandomJoke: ( - props: ComponentRenderer & { - title?: string | undefined; - } & { + props: CardExtensionProps<{ defaultCategory?: 'any' | 'programming' | undefined; - }, + }>, ) => JSX.Element; // @public export const HomePageStarredEntities: ( - props: ComponentRenderer & { - title?: string | undefined; - }, + props: CardExtensionProps, ) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "ToolkitContentProps" needs to be exported by the entry point index.d.ts -// // @public export const HomePageToolkit: ( - props: ComponentRenderer & { - title?: string | undefined; - } & ToolkitContentProps, + props: CardExtensionProps, ) => JSX.Element; // @public (undocumented) @@ -111,8 +112,11 @@ export const homePlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "SettingsModal" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type RendererProps = { + title: string; +} & ComponentParts; + // @public (undocumented) export const SettingsModal: (props: { open: boolean; @@ -121,24 +125,29 @@ export const SettingsModal: (props: { children: JSX.Element; }) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "TemplateBackstageLogoProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "TemplateBackstageLogo" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const TemplateBackstageLogo: ( - props: TemplateBackstageLogoProps, -) => JSX.Element; +export const TemplateBackstageLogo: (props: { + classes: { + svg: string; + path: string; + }; +}) => JSX.Element; -// Warning: (ae-missing-release-tag) "TemplateBackstageLogoIcon" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const TemplateBackstageLogoIcon: () => JSX.Element; +// @public (undocumented) +export type Tool = { + label: string; + url: string; + icon: React_2.ReactNode; +}; + +// @public +export type ToolkitContentProps = { + tools: Tool[]; +}; + // @public export const WelcomeTitle: () => JSX.Element; - -// Warnings were encountered during analysis: -// -// src/extensions.d.ts:6:5 - (ae-forgotten-export) The symbol "RendererProps" needs to be exported by the entry point index.d.ts -// src/extensions.d.ts:27:5 - (ae-forgotten-export) The symbol "ComponentParts" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/home/src/assets/TemplateBackstageLogo.tsx b/plugins/home/src/assets/TemplateBackstageLogo.tsx index 9088cfa58c..231e65e0c6 100644 --- a/plugins/home/src/assets/TemplateBackstageLogo.tsx +++ b/plugins/home/src/assets/TemplateBackstageLogo.tsx @@ -16,16 +16,13 @@ import React from 'react'; -type Classes = { - svg: string; - path: string; -}; - -type TemplateBackstageLogoProps = { - classes: Classes; -}; - -export const TemplateBackstageLogo = (props: TemplateBackstageLogoProps) => { +/** @public */ +export const TemplateBackstageLogo = (props: { + classes: { + svg: string; + path: string; + }; +}) => { return ( { const classes = useStyles(); diff --git a/plugins/home/src/components/SettingsModal.tsx b/plugins/home/src/components/SettingsModal.tsx index 4ee25f9f5c..ace9944f28 100644 --- a/plugins/home/src/components/SettingsModal.tsx +++ b/plugins/home/src/components/SettingsModal.tsx @@ -23,6 +23,7 @@ import { DialogTitle, } from '@material-ui/core'; +/** @public */ export const SettingsModal = (props: { open: boolean; close: Function; diff --git a/plugins/home/src/extensions.tsx b/plugins/home/src/extensions.tsx index f1edbc99b6..af5dbee3ed 100644 --- a/plugins/home/src/extensions.tsx +++ b/plugins/home/src/extensions.tsx @@ -28,16 +28,25 @@ export type ComponentRenderer = { Renderer?: (props: RendererProps) => JSX.Element; }; -type ComponentParts = { +/** + * @public + */ +export type ComponentParts = { Content: (props?: any) => JSX.Element; Actions?: () => JSX.Element; Settings?: () => JSX.Element; ContextProvider?: (props: any) => JSX.Element; }; -type RendererProps = { title: string } & ComponentParts; +/** + * @public + */ +export type RendererProps = { title: string } & ComponentParts; -type CardExtensionProps = ComponentRenderer & { title?: string } & T; +/** + * @public + */ +export type CardExtensionProps = ComponentRenderer & { title?: string } & T; /** * An extension creator to create card based components for the homepage diff --git a/plugins/home/src/homePageComponents/HeaderWorldClock/HeaderWorldClock.tsx b/plugins/home/src/homePageComponents/HeaderWorldClock/HeaderWorldClock.tsx index 6672fe6a22..a45a51e0ad 100644 --- a/plugins/home/src/homePageComponents/HeaderWorldClock/HeaderWorldClock.tsx +++ b/plugins/home/src/homePageComponents/HeaderWorldClock/HeaderWorldClock.tsx @@ -27,6 +27,7 @@ type TimeObj = { label: string; }; +/** @public */ export type ClockConfig = { label: string; timeZone: string; diff --git a/plugins/home/src/homePageComponents/Toolkit/Content.tsx b/plugins/home/src/homePageComponents/Toolkit/Content.tsx index e73a834a7e..a1ada00b0b 100644 --- a/plugins/home/src/homePageComponents/Toolkit/Content.tsx +++ b/plugins/home/src/homePageComponents/Toolkit/Content.tsx @@ -52,15 +52,6 @@ const useStyles = makeStyles(theme => ({ }, })); -/** - * Props for Toolkit content component {@link Content}. - * - * @public - */ -export type ToolkitContentProps = { - tools: Tool[]; -}; - /** * A component to display a list of tools for the user. * @@ -85,3 +76,12 @@ export const Content = (props: ToolkitContentProps) => { ); }; + +/** + * Props for Toolkit Content component. + * + * @public + */ +export type ToolkitContentProps = { + tools: Tool[]; +}; diff --git a/plugins/home/src/homePageComponents/Toolkit/Context.tsx b/plugins/home/src/homePageComponents/Toolkit/Context.tsx index 3e7b121252..20f8b16b6d 100644 --- a/plugins/home/src/homePageComponents/Toolkit/Context.tsx +++ b/plugins/home/src/homePageComponents/Toolkit/Context.tsx @@ -16,6 +16,7 @@ import React, { createContext } from 'react'; +/** @public */ export type Tool = { label: string; url: string; diff --git a/plugins/home/src/homePageComponents/Toolkit/index.ts b/plugins/home/src/homePageComponents/Toolkit/index.ts index 67ea1f3c84..266a8afffb 100644 --- a/plugins/home/src/homePageComponents/Toolkit/index.ts +++ b/plugins/home/src/homePageComponents/Toolkit/index.ts @@ -17,3 +17,4 @@ export { Content } from './Content'; export type { ToolkitContentProps } from './Content'; export { ContextProvider } from './Context'; +export type { Tool } from './Context'; diff --git a/plugins/home/src/homePageComponents/index.ts b/plugins/home/src/homePageComponents/index.ts index d318226dbd..6a3978c595 100644 --- a/plugins/home/src/homePageComponents/index.ts +++ b/plugins/home/src/homePageComponents/index.ts @@ -14,6 +14,5 @@ * limitations under the License. */ -export * from './CompanyLogo'; -export * from './Toolkit'; +export type { ToolkitContentProps, Tool } from './Toolkit'; export type { ClockConfig } from './HeaderWorldClock'; diff --git a/plugins/home/src/index.ts b/plugins/home/src/index.ts index 1776b5aa9c..83eb72b613 100644 --- a/plugins/home/src/index.ts +++ b/plugins/home/src/index.ts @@ -35,6 +35,11 @@ export { } from './plugin'; export { SettingsModal } from './components'; export * from './assets'; -export type { ClockConfig } from './homePageComponents'; +export * from './homePageComponents'; export { createCardExtension } from './extensions'; -export type { ComponentRenderer } from './extensions'; +export type { + CardExtensionProps, + ComponentParts, + ComponentRenderer, + RendererProps, +} from './extensions'; diff --git a/plugins/home/src/plugin.ts b/plugins/home/src/plugin.ts index 9b221ad8dc..5ae72ae510 100644 --- a/plugins/home/src/plugin.ts +++ b/plugins/home/src/plugin.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { createComponentExtension, createPlugin, @@ -20,7 +21,6 @@ import { } from '@backstage/core-plugin-api'; import { createCardExtension } from './extensions'; import { ToolkitContentProps } from './homePageComponents'; - import { rootRouteRef } from './routes'; /** @public */ diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 974cdf88a5..3f61a8c930 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -224,7 +224,6 @@ const ALLOW_WARNINGS = [ 'plugins/github-pull-requests-board', 'plugins/gitops-profiles', 'plugins/graphql-backend', - 'plugins/home', 'plugins/ilert', 'plugins/jenkins', 'plugins/jenkins-backend', From 889aed210f4cd9fa50bc7abbfb809c40f6434f0e Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 19 Aug 2022 10:50:59 +0100 Subject: [PATCH 138/275] Made changes requested in the pull request Signed-off-by: Alisson Fabiano --- .changeset/weak-yaks-learn.md | 75 ++++++++++++++++- packages/backend/src/plugins/azure-devops.ts | 1 + plugins/azure-devops-backend/package.json | 3 +- .../src/api/AzureDevOpsApi.ts | 37 ++++----- .../src/service/router.test.ts | 28 ++++--- .../src/service/router.ts | 6 +- .../src/service/standaloneServer.ts | 2 + .../src/utils/azure-devops-utils.test.ts | 53 +++++------- .../src/utils/azure-devops-utils.ts | 58 ++++++++------ .../azure-devops/src/api/AzureDevOpsApi.ts | 2 +- .../azure-devops/src/api/AzureDevOpsClient.ts | 27 ++----- .../src/components/ReadmeCard/ReadmeCard.tsx | 80 ++++++++----------- plugins/azure-devops/src/plugin.ts | 9 ++- plugins/azure-devops/src/routes.ts | 4 - 14 files changed, 213 insertions(+), 172 deletions(-) diff --git a/.changeset/weak-yaks-learn.md b/.changeset/weak-yaks-learn.md index dfbc256af1..bf0e3eafd0 100644 --- a/.changeset/weak-yaks-learn.md +++ b/.changeset/weak-yaks-learn.md @@ -1,7 +1,76 @@ --- -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-azure-devops-backend': patch -'@backstage/plugin-azure-devops-common': patch +'@backstage/plugin-azure-devops': minor +'@backstage/plugin-azure-devops-backend': minor +'@backstage/plugin-azure-devops-common': minor --- Added README card for Azure Devops + +**Before:** + +Remember to check if you have already provided these settings previously, as we will need them for the reame card to work. + +#### [Azure DevOps](https://github.com/backstage/backstage/blob/master/app-config.yaml#L48L51:~:text=azureDevOps%3A,%3A%20my%2Dcompany) + +```yaml +# app-config.yaml +azureDevOps: + host: dev.azure.com + token: my-token + organization: my-company +``` + +#### [Azure Integrations](https://github.com/backstage/backstage/blob/master/app-config.yaml#L48L51:~:text=azure%3A,%3A%20%24%7BAZURE_TOKEN%7D) + +```yaml +# app-config.yaml +integrations: + azure: + - host: dev.azure.com + token: ${AZURE_TOKEN} +``` + +**After:** + +To get the README component working you'll need to do the following two steps: + +1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: + + ```bash + # From your Backstage root directory + yarn add --cwd packages/app @backstage/plugin-azure-devops + ``` + +2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: + + ```tsx + // In packages/app/src/components/catalog/EntityPage.tsx + import { + EntityAzureReadmeCard, + isAzureDevOpsAvailable, + } from '@backstage/plugin-azure-devops'; + + // As it is a card, you can customize it the way you prefer + // For example in the Service section + + const overviewContent = ( + + + + + ... + + + + + + + + ); + ``` + +**Notes:** + +- You'll need to add the `EntitySwitch.Case` above from step 2 to all the entity sections you want to see Readme in. For example if you wanted to see Readme when looking at Website entities then you would need to add this to the `websiteEntityPage` section. +- The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation +- The `maxHeight` property on the `EntityAzureReadmeCard` will set the maximum screen size you would like to see, if not set it will default to 100% diff --git a/packages/backend/src/plugins/azure-devops.ts b/packages/backend/src/plugins/azure-devops.ts index 67bba8ac85..ed5b1d0068 100644 --- a/packages/backend/src/plugins/azure-devops.ts +++ b/packages/backend/src/plugins/azure-devops.ts @@ -24,5 +24,6 @@ export default async function createPlugin( return createRouter({ logger: env.logger, config: env.config, + reader: env.reader, }); } diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index d960c1e311..5c1ecb0901 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -32,7 +32,8 @@ "express-promise-router": "^4.1.0", "p-limit": "^3.1.0", "winston": "^3.2.1", - "yn": "^4.0.0" + "yn": "^4.0.0", + "mime-types": "^2.1.27" }, "devDependencies": { "@backstage/cli": "^0.18.1-next.0", diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index f737eac28b..92bf90d240 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -43,6 +43,7 @@ import { convertPolicy, getArtifactId, replaceReadme, + buildEncodedUrl, } from '../utils'; import { TeamMember as AdoTeamMember } from 'azure-devops-node-api/interfaces/common/VSSInterfaces'; @@ -399,32 +400,24 @@ export class AzureDevOpsApi { public async getReadme( host: string, - organization: string, - projectName: string, - repoName: string, + org: string, + project: string, + repo: string, ): Promise<{ url: string; content: string; }> { - const getFileContent = async ( - path: string, - encoding?: BufferEncoding, - ): Promise<{ - url: string; - content: string; - }> => { - const url = `https://${host}/${organization}/${projectName}/_git/${repoName}?path=${path}`; - const response = await this.urlReader.read(url); - return { - url, - content: Buffer.from(response).toString(encoding), - }; - }; - const { url, content } = await getFileContent('README.md'); - return { - url, - content: await replaceReadme(content, getFileContent), - }; + const url = buildEncodedUrl(host, org, project, repo, 'README.md'); + const response = await this.urlReader.read(url); + const content = await replaceReadme( + this.urlReader, + host, + org, + project, + repo, + response.toString(), + ); + return { url, content }; } } diff --git a/plugins/azure-devops-backend/src/service/router.test.ts b/plugins/azure-devops-backend/src/service/router.test.ts index 717a716b77..a77600feb0 100644 --- a/plugins/azure-devops-backend/src/service/router.test.ts +++ b/plugins/azure-devops-backend/src/service/router.test.ts @@ -33,7 +33,7 @@ import { ConfigReader } from '@backstage/config'; import { GitRepository } from 'azure-devops-node-api/interfaces/GitInterfaces'; import { createRouter } from './router'; import express from 'express'; -import { getVoidLogger } from '@backstage/backend-common'; +import { getVoidLogger, UrlReaders } from '@backstage/backend-common'; import request from 'supertest'; describe('createRouter', () => { @@ -55,18 +55,28 @@ describe('createRouter', () => { getTeamMembers: jest.fn(), getReadme: jest.fn(), } as any; + + const config = new ConfigReader({ + azureDevOps: { + token: 'foo', + host: 'host.com', + organization: 'myOrg', + top: 5, + }, + }); + + const logger = getVoidLogger(); + const router = await createRouter({ + config, + logger, azureDevOpsApi, - logger: getVoidLogger(), - config: new ConfigReader({ - azureDevOps: { - token: 'foo', - host: 'host.com', - organization: 'myOrg', - top: 5, - }, + reader: UrlReaders.default({ + config, + logger, }), }); + app = express().use(router); }); diff --git a/plugins/azure-devops-backend/src/service/router.ts b/plugins/azure-devops-backend/src/service/router.ts index 8ea9b20e2c..d371e79e7e 100644 --- a/plugins/azure-devops-backend/src/service/router.ts +++ b/plugins/azure-devops-backend/src/service/router.ts @@ -26,7 +26,7 @@ import { Config } from '@backstage/config'; import { Logger } from 'winston'; import { PullRequestsDashboardProvider } from '../api/PullRequestsDashboardProvider'; import Router from 'express-promise-router'; -import { errorHandler, UrlReaders } from '@backstage/backend-common'; +import { errorHandler, UrlReader } from '@backstage/backend-common'; import express from 'express'; const DEFAULT_TOP = 10; @@ -35,18 +35,18 @@ export interface RouterOptions { azureDevOpsApi?: AzureDevOpsApi; logger: Logger; config: Config; + reader: UrlReader; } export async function createRouter( options: RouterOptions, ): Promise { - const { logger } = options; + const { logger, reader } = options; const config = options.config.getConfig('azureDevOps'); const token = config.getString('token'); const host = config.getString('host'); const organization = config.getString('organization'); - const reader = UrlReaders.default(options); const authHandler = getPersonalAccessTokenHandler(token); const webApi = new WebApi(`https://${host}/${organization}`, authHandler); diff --git a/plugins/azure-devops-backend/src/service/standaloneServer.ts b/plugins/azure-devops-backend/src/service/standaloneServer.ts index 1d5889fcf1..e2f4aa4986 100644 --- a/plugins/azure-devops-backend/src/service/standaloneServer.ts +++ b/plugins/azure-devops-backend/src/service/standaloneServer.ts @@ -17,6 +17,7 @@ import { createServiceBuilder, loadBackendConfig, + UrlReaders, } from '@backstage/backend-common'; import { Server } from 'http'; import { Logger } from 'winston'; @@ -39,6 +40,7 @@ export async function startStandaloneServer( const router = await createRouter({ logger, config, + reader: UrlReaders.default({ logger, config }), }); let service = createServiceBuilder(module) diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts index c9bde296f6..f044a20968 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts @@ -25,12 +25,11 @@ import { extractPartsFromAsset, getArtifactId, getAvatarUrl, - getMimeByExtension, getPullRequestLink, replaceReadme, } from './azure-devops-utils'; - import { GitPullRequest } from 'azure-devops-node-api/interfaces/GitInterfaces'; +import { UrlReader } from '@backstage/backend-common'; describe('convertDashboardPullRequest', () => { it('should return DashboardPullRequest', () => { @@ -236,16 +235,6 @@ describe('extractPartsFromAsset', () => { }); }); -describe('getMimeByExtension', () => { - it('should return mime type', () => { - expect(getMimeByExtension('.png')).toBe('image/png'); - expect(getMimeByExtension('.jpg')).toBe('image/jpeg'); - expect(getMimeByExtension('.jpeg')).toBe('image/jpeg'); - expect(getMimeByExtension('.webp')).toBe('image/webp'); - expect(getMimeByExtension('.gif')).toBe('image/gif'); - }); -}); - describe('replaceReadme', () => { it('should return mime type', async () => { const readme = ` @@ -257,31 +246,29 @@ describe('replaceReadme', () => { ![Image 5](/images/sa)mple.gif) `; - async function mockFileContent( - path: string, - encoding?: BufferEncoding, - ): Promise<{ - url: string; - content: string; - }> { - expect(encoding).toBe('base64'); - return new Promise(resolve => - resolve({ - url: '', - content: Buffer.from(path).toString(encoding), - }), - ); - } + const reader: UrlReader = { + read: url => new Promise(resolve => resolve(Buffer.from(url))), + readTree: jest.fn(), + search: jest.fn(), + readUrl: jest.fn(), + }; - const result = await replaceReadme(readme, mockFileContent); + const result = await replaceReadme( + reader, + 'host', + 'org', + 'project', + 'repo', + readme, + ); const expected = ` ## Images - ![Image 1](data:image/png;base64,L2ltYWdlcy9zYW1wbGUtNCgyKS5wbmc=) - ![Image 2](data:image/jpeg;base64,L2ltYWdlcy9jZENTaistMDEyMzQwLmpwZw==) - ![Image 3](data:image/jpeg;base64,L2ltYWdlcy90ZXN0LTQoMikpKSkuanBlZw==) - ![Image 4](data:image/webp;base64,L2ltYWdlcy90ZXN0LTIyMTFqZC53ZWJw) - ![Image 5](data:image/gif;base64,L2ltYWdlcy9zYSltcGxlLmdpZg==) + ![Image 1](data:image/png;base64,aHR0cHM6Ly9ob3N0L29yZy9wcm9qZWN0L19naXQvcmVwbz9wYXRoPSUyRmltYWdlcyUyRnNhbXBsZS00KDIpLnBuZw==) + ![Image 2](data:image/jpeg;base64,aHR0cHM6Ly9ob3N0L29yZy9wcm9qZWN0L19naXQvcmVwbz9wYXRoPSUyRmltYWdlcyUyRmNkQ1NqJTJCLTAxMjM0MC5qcGc=) + ![Image 3](data:image/jpeg;base64,aHR0cHM6Ly9ob3N0L29yZy9wcm9qZWN0L19naXQvcmVwbz9wYXRoPSUyRmltYWdlcyUyRnRlc3QtNCgyKSkpKS5qcGVn) + ![Image 4](data:image/webp;base64,aHR0cHM6Ly9ob3N0L29yZy9wcm9qZWN0L19naXQvcmVwbz9wYXRoPSUyRmltYWdlcyUyRnRlc3QtMjIxMWpkLndlYnA=) + ![Image 5](data:image/gif;base64,aHR0cHM6Ly9ob3N0L29yZy9wcm9qZWN0L19naXQvcmVwbz9wYXRoPSUyRmltYWdlcyUyRnNhKW1wbGUuZ2lm) `; expect(expected).toBe(result); diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts index ab5a4113d2..191486a925 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts @@ -30,9 +30,11 @@ import { GitRepository, IdentityRefWithVote, } from 'azure-devops-node-api/interfaces/GitInterfaces'; +import mime from 'mime-types'; import { IdentityRef } from 'azure-devops-node-api/interfaces/common/VSSInterfaces'; import { PolicyEvaluationRecord } from 'azure-devops-node-api/interfaces/PolicyInterfaces'; +import { UrlReader } from '@backstage/backend-common'; export function convertDashboardPullRequest( pullRequest: GitPullRequest, @@ -206,31 +208,47 @@ export function convertPolicy( } export async function replaceReadme( - readme: string, - getFileContent: ( - path: string, - encoding?: BufferEncoding, - ) => Promise<{ - url: string; - content: string; - }>, + urlReader: UrlReader, + host: string, + org: string, + project: string, + repo: string, + readmeContent: string, ) { - const filesPath = extractAssets(readme); + const filesPath = extractAssets(readmeContent); + if (!filesPath) return readmeContent; return await filesPath.reduce( async (promise: Promise, filePath: string) => promise.then(async content => { const { label, path, ext } = extractPartsFromAsset(filePath); - const mime = getMimeByExtension(ext); - const file = await getFileContent(path + ext, 'base64'); + const data = mime.lookup(ext); + const url = buildEncodedUrl(host, org, project, repo, path + ext); + const buffer = await urlReader.read(url); + const file = await buffer.toString('base64'); return content.replace( filePath, - `[${label}](data:${mime};base64,${file.content})`, + `[${label}](data:${data};base64,${file})`, ); }), - Promise.resolve(readme), + Promise.resolve(readmeContent), ); } +export function buildEncodedUrl( + host: string, + org: string, + project: string, + repo: string, + path: string, +): string { + const encodedHost = encodeURIComponent(host); + const encodedOrg = encodeURIComponent(org); + const encodedProject = encodeURIComponent(project); + const encodedRepo = encodeURIComponent(repo); + const encodedPath = encodeURIComponent(path); + return `https://${encodedHost}/${encodedOrg}/${encodedProject}/_git/${encodedRepo}?path=${encodedPath}`; +} + function convertReviewer( identityRef?: IdentityRefWithVote, ): Reviewer | undefined { @@ -293,7 +311,7 @@ function hasAutoComplete(pullRequest: GitPullRequest): boolean { export function extractAssets(content: string) { const regExp = /\[([^\[\]]*)\]\((?!https?:\/\/)(.*?)(\.png|\.jpg|\.jpeg|\.gif|\.webp)(.*)\)/gim; - return content.match(regExp) || []; + return content.match(regExp); } export function extractPartsFromAsset(content: string): { @@ -310,15 +328,3 @@ export function extractPartsFromAsset(content: string): { path: path.startsWith('.') ? path.substring(1, path.length) : path, }; } - -export function getMimeByExtension(ext: string): string { - return ( - { - '.png': 'image/png', - '.jpg': 'image/jpeg', - '.jpeg': 'image/jpeg', - '.gif': 'image/gif', - '.webp': 'image/webp', - }[ext] || '' - ); -} diff --git a/plugins/azure-devops/src/api/AzureDevOpsApi.ts b/plugins/azure-devops/src/api/AzureDevOpsApi.ts index 1959d0389a..da6a3cda14 100644 --- a/plugins/azure-devops/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops/src/api/AzureDevOpsApi.ts @@ -67,5 +67,5 @@ export interface AzureDevOpsApi { options?: BuildRunOptions, ): Promise<{ items: BuildRun[] }>; - getReadme(opts: ReadmeConfig): Promise; + getReadme(opts: ReadmeConfig): Promise; } diff --git a/plugins/azure-devops/src/api/AzureDevOpsClient.ts b/plugins/azure-devops/src/api/AzureDevOpsClient.ts index f9384a0549..9797f4ff26 100644 --- a/plugins/azure-devops/src/api/AzureDevOpsClient.ts +++ b/plugins/azure-devops/src/api/AzureDevOpsClient.ts @@ -32,10 +32,6 @@ import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; import { AzureDevOpsApi } from './AzureDevOpsApi'; import { ResponseError } from '@backstage/errors'; -function isNotFoundError(error: any): error is ResponseError { - return error.response.status === 404; -} - export class AzureDevOpsClient implements AzureDevOpsApi { private readonly discoveryApi: DiscoveryApi; private readonly identityApi: IdentityApi; @@ -136,22 +132,13 @@ export class AzureDevOpsClient implements AzureDevOpsApi { return { items }; } - public getReadme = async ( - opts: ReadmeConfig, - ): Promise => { - try { - return await this.get( - `readme/${encodeURIComponent(opts.project)}/${encodeURIComponent( - opts.repo, - )}`, - ); - } catch (e) { - if (isNotFoundError(e)) { - return undefined; - } - return e; - } - }; + public async getReadme(opts: ReadmeConfig): Promise { + return await this.get( + `readme/${encodeURIComponent(opts.project)}/${encodeURIComponent( + opts.repo, + )}`, + ); + } private async get(path: string): Promise { const baseUrl = `${await this.discoveryApi.getBaseUrl('azure-devops')}/`; diff --git a/plugins/azure-devops/src/components/ReadmeCard/ReadmeCard.tsx b/plugins/azure-devops/src/components/ReadmeCard/ReadmeCard.tsx index 29031514e8..d06726e929 100644 --- a/plugins/azure-devops/src/components/ReadmeCard/ReadmeCard.tsx +++ b/plugins/azure-devops/src/components/ReadmeCard/ReadmeCard.tsx @@ -14,13 +14,13 @@ * limitations under the License. */ -import { Button, makeStyles } from '@material-ui/core'; -import { Alert } from '@material-ui/lab'; +import { Box, Button, makeStyles } from '@material-ui/core'; import { InfoCard, Progress, MarkdownContent, EmptyState, + ErrorPanel, } from '@backstage/core-components'; import { useEntity } from '@backstage/plugin-catalog-react'; import { useProjectRepoFromEntity } from '../../hooks'; @@ -30,15 +30,6 @@ import { azureDevOpsApiRef } from '../../api'; import useAsync from 'react-use/lib/useAsync'; const useStyles = makeStyles(theme => ({ - infoCard: { - marginBottom: theme.spacing(3), - '& + .MuiAlert-root': { - marginTop: theme.spacing(3), - }, - '& .MuiCardContent-root': { - padding: theme.spacing(2, 1, 2, 2), - }, - }, readMe: { overflowY: 'auto', paddingRight: theme.spacing(1), @@ -63,6 +54,35 @@ type Props = { maxHeight?: number; }; +type ErrorProps = { + error: Error; +}; + +function isNotFoundError(error: any): boolean { + return error?.response?.status === 404; +} + +const ReadmeCardError = ({ error }: ErrorProps) => { + if (isNotFoundError(error)) + return ( + + Read more + + } + /> + ); + return ; +}; + export const ReadmeCard = (props: Props) => { const classes = useStyles(); const api = useApi(azureDevOpsApiRef); @@ -81,52 +101,20 @@ export const ReadmeCard = (props: Props) => { if (loading) { return ; } else if (error) { - return ( - - {error.message} - - ); + return ; } - if (!value) - return ( - - Read more - - } - /> - ); - return ( { - e.preventDefault(); - window.open(value?.url); - }, }} > -
    + -
    + ); }; diff --git a/plugins/azure-devops/src/plugin.ts b/plugins/azure-devops/src/plugin.ts index b9fb95d9aa..c6d868717b 100644 --- a/plugins/azure-devops/src/plugin.ts +++ b/plugins/azure-devops/src/plugin.ts @@ -24,12 +24,12 @@ import { azurePullRequestDashboardRouteRef, azureGitTagsEntityContentRouteRef, azurePullRequestsEntityContentRouteRef, - azureReadmeEntityCardRouteRef, } from './routes'; import { createApiFactory, createPlugin, createRoutableExtension, + createComponentExtension, discoveryApiRef, identityApiRef, } from '@backstage/core-plugin-api'; @@ -103,9 +103,10 @@ export const EntityAzurePullRequestsContent = azureDevOpsPlugin.provide( ); export const EntityAzureReadmeCard = azureDevOpsPlugin.provide( - createRoutableExtension({ + createComponentExtension({ name: 'EntityAzureReadmeCard', - component: () => import('./components/ReadmeCard').then(m => m.ReadmeCard), - mountPoint: azureReadmeEntityCardRouteRef, + component: { + lazy: () => import('./components/ReadmeCard').then(m => m.ReadmeCard), + }, }), ); diff --git a/plugins/azure-devops/src/routes.ts b/plugins/azure-devops/src/routes.ts index 3efce043a8..4ed35bbe12 100644 --- a/plugins/azure-devops/src/routes.ts +++ b/plugins/azure-devops/src/routes.ts @@ -31,7 +31,3 @@ export const azureGitTagsEntityContentRouteRef = createRouteRef({ export const azurePullRequestsEntityContentRouteRef = createRouteRef({ id: 'azure-pull-requests-entity-content', }); - -export const azureReadmeEntityCardRouteRef = createRouteRef({ - id: 'azure-readme-entity-card', -}); From eec0b15d3b0aada9cdf174b49154fb99ba890260 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 11:51:55 +0200 Subject: [PATCH 139/275] app-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/app-backend/api-report.md | 4 ---- plugins/app-backend/src/service/router.ts | 2 ++ scripts/api-extractor.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/app-backend/api-report.md b/plugins/app-backend/api-report.md index e1b0c63469..0383129823 100644 --- a/plugins/app-backend/api-report.md +++ b/plugins/app-backend/api-report.md @@ -8,13 +8,9 @@ import express from 'express'; import { Logger } from 'winston'; import { PluginDatabaseManager } from '@backstage/backend-common'; -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RouterOptions { appPackageName: string; diff --git a/plugins/app-backend/src/service/router.ts b/plugins/app-backend/src/service/router.ts index 46ecd470da..de299fd895 100644 --- a/plugins/app-backend/src/service/router.ts +++ b/plugins/app-backend/src/service/router.ts @@ -40,6 +40,7 @@ import { // express uses mime v1 while we only have types for mime v2 type Mime = { lookup(arg0: string): string }; +/** @public */ export interface RouterOptions { config: Config; logger: Logger; @@ -85,6 +86,7 @@ export interface RouterOptions { disableConfigInjection?: boolean; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 3f61a8c930..1fd8131b4d 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -201,7 +201,6 @@ const ALLOW_WARNINGS = [ 'packages/core-components', 'plugins/allure', 'plugins/apache-airflow', - 'plugins/app-backend', 'plugins/auth-backend', 'plugins/bitrise', 'plugins/catalog', From 77a9d2f6cf9fc4c548cc994468bb7e5749b1c542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 11:56:16 +0200 Subject: [PATCH 140/275] shortcuts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/shortcuts/api-report.md | 12 ------------ plugins/shortcuts/src/api/LocalStoredShortcuts.ts | 2 ++ plugins/shortcuts/src/api/ShortcutApi.ts | 2 ++ plugins/shortcuts/src/plugin.ts | 2 ++ plugins/shortcuts/src/types.ts | 1 + scripts/api-extractor.ts | 1 - 6 files changed, 7 insertions(+), 13 deletions(-) diff --git a/plugins/shortcuts/api-report.md b/plugins/shortcuts/api-report.md index 7f81df835d..1aa1dea003 100644 --- a/plugins/shortcuts/api-report.md +++ b/plugins/shortcuts/api-report.md @@ -12,8 +12,6 @@ import { Observable } from '@backstage/types'; import { default as Observable_2 } from 'zen-observable'; import { StorageApi } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "LocalStoredShortcuts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class LocalStoredShortcuts implements ShortcutApi { constructor(storageApi: StorageApi); @@ -31,8 +29,6 @@ export class LocalStoredShortcuts implements ShortcutApi { update(shortcut: Shortcut): Promise; } -// Warning: (ae-missing-release-tag) "Shortcut" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Shortcut = { id: string; @@ -40,8 +36,6 @@ export type Shortcut = { title: string; }; -// Warning: (ae-missing-release-tag) "ShortcutApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ShortcutApi { add(shortcut: Omit): Promise; @@ -52,18 +46,12 @@ export interface ShortcutApi { update(shortcut: Shortcut): Promise; } -// Warning: (ae-missing-release-tag) "Shortcuts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const Shortcuts: (props: ShortcutsProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "shortcutsApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const shortcutsApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "shortcutsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const shortcutsPlugin: BackstagePlugin<{}, {}, {}>; diff --git a/plugins/shortcuts/src/api/LocalStoredShortcuts.ts b/plugins/shortcuts/src/api/LocalStoredShortcuts.ts index 82f4b7dd1a..9f3561be67 100644 --- a/plugins/shortcuts/src/api/LocalStoredShortcuts.ts +++ b/plugins/shortcuts/src/api/LocalStoredShortcuts.ts @@ -23,6 +23,8 @@ import Observable from 'zen-observable'; /** * Implementation of the ShortcutApi that uses the StorageApi to store shortcuts. + * + * @public */ export class LocalStoredShortcuts implements ShortcutApi { constructor(private readonly storageApi: StorageApi) {} diff --git a/plugins/shortcuts/src/api/ShortcutApi.ts b/plugins/shortcuts/src/api/ShortcutApi.ts index 1f93baa66c..96c5de1697 100644 --- a/plugins/shortcuts/src/api/ShortcutApi.ts +++ b/plugins/shortcuts/src/api/ShortcutApi.ts @@ -18,10 +18,12 @@ import { Shortcut } from '../types'; import { createApiRef } from '@backstage/core-plugin-api'; import { Observable } from '@backstage/types'; +/** @public */ export const shortcutsApiRef = createApiRef({ id: 'plugin.shortcuts.api', }); +/** @public */ export interface ShortcutApi { /** * Returns an Observable that will subscribe to changes. diff --git a/plugins/shortcuts/src/plugin.ts b/plugins/shortcuts/src/plugin.ts index d20cfa8401..2b0d0559e0 100644 --- a/plugins/shortcuts/src/plugin.ts +++ b/plugins/shortcuts/src/plugin.ts @@ -22,6 +22,7 @@ import { storageApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const shortcutsPlugin = createPlugin({ id: 'shortcuts', apis: [ @@ -34,6 +35,7 @@ export const shortcutsPlugin = createPlugin({ ], }); +/** @public */ export const Shortcuts = shortcutsPlugin.provide( createComponentExtension({ name: 'Shortcuts', diff --git a/plugins/shortcuts/src/types.ts b/plugins/shortcuts/src/types.ts index 2421f0e369..75ef561f74 100644 --- a/plugins/shortcuts/src/types.ts +++ b/plugins/shortcuts/src/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export type Shortcut = { id: string; url: string; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 1fd8131b4d..13c252a991 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -232,7 +232,6 @@ const ALLOW_WARNINGS = [ 'plugins/newrelic-dashboard', 'plugins/pagerduty', 'plugins/search-backend-module-pg', - 'plugins/shortcuts', 'plugins/splunk-on-call', 'plugins/tech-radar', 'plugins/user-settings', From cd819fc01520b95c2d393b33b6509402442288db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 12:01:23 +0200 Subject: [PATCH 141/275] tech-radar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/tech-radar/api-report.md | 30 ------------------- plugins/tech-radar/src/api.ts | 17 +++++++++++ .../src/components/RadarComponent.tsx | 4 +++ .../tech-radar/src/components/RadarPage.tsx | 4 +++ plugins/tech-radar/src/index.ts | 2 ++ plugins/tech-radar/src/plugin.ts | 5 +++- scripts/api-extractor.ts | 1 - 7 files changed, 31 insertions(+), 32 deletions(-) diff --git a/plugins/tech-radar/api-report.md b/plugins/tech-radar/api-report.md index a55cf79f28..39fa19da43 100644 --- a/plugins/tech-radar/api-report.md +++ b/plugins/tech-radar/api-report.md @@ -9,8 +9,6 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "MovedState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export enum MovedState { Down = -1, @@ -18,8 +16,6 @@ export enum MovedState { Up = 1, } -// Warning: (ae-missing-release-tag) "RadarEntry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface RadarEntry { description?: string; @@ -31,8 +27,6 @@ export interface RadarEntry { url: string; } -// Warning: (ae-missing-release-tag) "RadarEntrySnapshot" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface RadarEntrySnapshot { date: Date; @@ -41,21 +35,15 @@ export interface RadarEntrySnapshot { ringId: string; } -// Warning: (ae-missing-release-tag) "RadarPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function RadarPage(props: TechRadarPageProps): JSX.Element; -// Warning: (ae-missing-release-tag) "RadarQuadrant" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface RadarQuadrant { id: string; name: string; } -// Warning: (ae-missing-release-tag) "RadarRing" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface RadarRing { color: string; @@ -63,30 +51,20 @@ export interface RadarRing { name: string; } -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export const Router: typeof RadarPage; -// Warning: (ae-missing-release-tag) "TechRadarApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface TechRadarApi { load: (id: string | undefined) => Promise; } -// Warning: (ae-missing-release-tag) "techRadarApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export const techRadarApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "RadarComponent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function TechRadarComponent(props: TechRadarComponentProps): JSX.Element; -// Warning: (ae-missing-release-tag) "TechRadarComponentProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface TechRadarComponentProps { height: number; @@ -96,8 +74,6 @@ export interface TechRadarComponentProps { width: number; } -// Warning: (ae-missing-release-tag) "TechRadarLoaderResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface TechRadarLoaderResponse { entries: RadarEntry[]; @@ -105,13 +81,9 @@ export interface TechRadarLoaderResponse { rings: RadarRing[]; } -// Warning: (ae-missing-release-tag) "TechRadarPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export const TechRadarPage: RadarPage; -// Warning: (ae-missing-release-tag) "TechRadarPageProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface TechRadarPageProps extends TechRadarComponentProps { pageTitle?: string; @@ -119,8 +91,6 @@ export interface TechRadarPageProps extends TechRadarComponentProps { title?: string; } -// Warning: (ae-missing-release-tag) "techRadarPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public const techRadarPlugin: BackstagePlugin< { diff --git a/plugins/tech-radar/src/api.ts b/plugins/tech-radar/src/api.ts index 241f3dce85..c932ec98e2 100644 --- a/plugins/tech-radar/src/api.ts +++ b/plugins/tech-radar/src/api.ts @@ -13,10 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { ApiRef, createApiRef } from '@backstage/core-plugin-api'; /** * {@link @backstage/core-plugin-api#ApiRef} for the {@link TechRadarApi} + * + * @public */ export const techRadarApiRef: ApiRef = createApiRef( { @@ -31,6 +34,8 @@ export const techRadarApiRef: ApiRef = createApiRef( * * This should be implemented by user, as {@link https://github.com/backstage/backstage/blob/master/plugins/tech-radar/src/sample.ts | default} * serves only some static data for example purposes + * + * @public */ export interface TechRadarApi { /** @@ -46,6 +51,8 @@ export interface TechRadarApi { /** * Tech Radar Ring which indicates stage of {@link RadarEntry} + * + * @public */ export interface RadarRing { /** @@ -68,6 +75,8 @@ export interface RadarRing { /** * Tech Radar Quadrant which represent area/topic of {@link RadarEntry} + * + * @public */ export interface RadarQuadrant { /** @@ -82,6 +91,8 @@ export interface RadarQuadrant { /** * Single Entry in Tech Radar + * + * @public */ export interface RadarEntry { /** @@ -120,6 +131,8 @@ export interface RadarEntry { /** * State of {@link RadarEntry} at given point in time + * + * @public */ export interface RadarEntrySnapshot { /** @@ -142,6 +155,8 @@ export interface RadarEntrySnapshot { /** * Indicates how {@link RadarEntry} moved though {@link RadarRing} on {@link RadarEntry.timeline} + * + * @public */ export enum MovedState { /** @@ -164,6 +179,8 @@ export enum MovedState { /** * Response from {@link TechRadarApi} + * + * @public */ export interface TechRadarLoaderResponse { /** diff --git a/plugins/tech-radar/src/components/RadarComponent.tsx b/plugins/tech-radar/src/components/RadarComponent.tsx index e7cca7d45f..4ed7626d52 100644 --- a/plugins/tech-radar/src/components/RadarComponent.tsx +++ b/plugins/tech-radar/src/components/RadarComponent.tsx @@ -61,6 +61,8 @@ function matchFilter(filter?: string): (entry: RadarEntry) => boolean { /** * Properties of {@link TechRadarComponent} + * + * @public */ export interface TechRadarComponentProps { /** @@ -95,6 +97,8 @@ export interface TechRadarComponentProps { * @remarks * * For advanced use cases. Typically, you want to use {@link TechRadarPage} + * + * @public */ export function RadarComponent(props: TechRadarComponentProps) { const { loading, error, value: data } = useTechRadarLoader(props.id); diff --git a/plugins/tech-radar/src/components/RadarPage.tsx b/plugins/tech-radar/src/components/RadarPage.tsx index 17e481fcc4..49f856eddd 100644 --- a/plugins/tech-radar/src/components/RadarPage.tsx +++ b/plugins/tech-radar/src/components/RadarPage.tsx @@ -34,6 +34,8 @@ const useStyles = makeStyles(() => ({ /** * Properties for {@link TechRadarPage} + * + * @public */ export interface TechRadarPageProps extends TechRadarComponentProps { /** @@ -52,6 +54,8 @@ export interface TechRadarPageProps extends TechRadarComponentProps { /** * Main Page of Tech Radar + * + * @public */ export function RadarPage(props: TechRadarPageProps) { const { diff --git a/plugins/tech-radar/src/index.ts b/plugins/tech-radar/src/index.ts index dbffcca553..0ea02cabe5 100644 --- a/plugins/tech-radar/src/index.ts +++ b/plugins/tech-radar/src/index.ts @@ -32,6 +32,8 @@ export * from './components'; /** * @deprecated Use plugin extensions instead + * + * @public */ export const Router = RadarPage; diff --git a/plugins/tech-radar/src/plugin.ts b/plugins/tech-radar/src/plugin.ts index 495aa47879..7f042a1b6f 100644 --- a/plugins/tech-radar/src/plugin.ts +++ b/plugins/tech-radar/src/plugin.ts @@ -15,7 +15,6 @@ */ import { techRadarApiRef } from './api'; - import { SampleTechRadarApi } from './sample'; import { createPlugin, @@ -30,6 +29,8 @@ const rootRouteRef = createRouteRef({ /** * Tech Radar plugin instance + * + * @public */ export const techRadarPlugin = createPlugin({ id: 'tech-radar', @@ -45,6 +46,8 @@ export const techRadarPlugin = createPlugin({ * @remarks * * Uses {@link TechRadarPageProps} as props + * + * @public */ export const TechRadarPage = techRadarPlugin.provide( createRoutableExtension({ diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 13c252a991..80ed5d5130 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -233,7 +233,6 @@ const ALLOW_WARNINGS = [ 'plugins/pagerduty', 'plugins/search-backend-module-pg', 'plugins/splunk-on-call', - 'plugins/tech-radar', 'plugins/user-settings', ]; From d467b7e3321a099e36717624f931bf6ceada1143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 12:10:03 +0200 Subject: [PATCH 142/275] user-settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/user-settings/api-report.md | 67 ++------ .../AuthProviders/DefaultProviderSettings.tsx | 143 +++++++++--------- .../AuthProviders/ProviderSettingsItem.tsx | 13 +- .../UserSettingsAuthProviders.tsx | 9 +- .../FeatureFlags/UserSettingsFeatureFlags.tsx | 2 +- .../General/UserSettingsAppearanceCard.tsx | 2 + .../General/UserSettingsGeneral.tsx | 2 + .../General/UserSettingsIdentityCard.tsx | 2 + .../components/General/UserSettingsMenu.tsx | 1 + .../General/UserSettingsPinToggle.tsx | 1 + .../General/UserSettingsProfileCard.tsx | 2 + .../General/UserSettingsSignInAvatar.tsx | 5 +- .../General/UserSettingsThemeToggle.tsx | 1 + .../user-settings/src/components/Settings.tsx | 7 +- .../src/components/UserSettingsTab/index.ts | 1 + plugins/user-settings/src/components/index.ts | 1 + .../src/components/useUserProfileInfo.ts | 1 + plugins/user-settings/src/plugin.ts | 2 + scripts/api-extractor.ts | 1 - 19 files changed, 120 insertions(+), 143 deletions(-) diff --git a/plugins/user-settings/api-report.md b/plugins/user-settings/api-report.md index d6aca3c46f..bc5c3a9c70 100644 --- a/plugins/user-settings/api-report.md +++ b/plugins/user-settings/api-report.md @@ -14,84 +14,56 @@ import { PropsWithChildren } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { SessionApi } from '@backstage/core-plugin-api'; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "DefaultProviderSettings" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const DefaultProviderSettings: ({ - configuredProviders, -}: Props_2) => JSX.Element; +export const DefaultProviderSettings: (props: { + configuredProviders: string[]; +}) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ProviderSettingsItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const ProviderSettingsItem: ({ - title, - description, - icon: Icon, - apiRef, -}: Props_3) => JSX.Element; +export const ProviderSettingsItem: (props: { + title: string; + description: string; + icon: IconComponent; + apiRef: ApiRef; +}) => JSX.Element; // @public (undocumented) export const Router: (props: { providerSettings?: JSX.Element }) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "SettingsProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "Settings" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const Settings: (props: SettingsProps) => JSX.Element; +export const Settings: (props: { icon?: IconComponent }) => JSX.Element; // @public (undocumented) export const USER_SETTINGS_TAB_KEY = 'user-settings.tab'; -// Warning: (ae-missing-release-tag) "UserSettingsAppearanceCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsAppearanceCard: () => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "UserSettingsAuthProviders" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const UserSettingsAuthProviders: ({ - providerSettings, -}: Props) => JSX.Element; +export const UserSettingsAuthProviders: (props: { + providerSettings?: JSX.Element; +}) => JSX.Element; -// Warning: (ae-missing-release-tag) "UserSettingsFeatureFlags" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsFeatureFlags: () => JSX.Element; -// Warning: (ae-missing-release-tag) "UserSettingsGeneral" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsGeneral: () => JSX.Element; -// Warning: (ae-missing-release-tag) "UserSettingsIdentityCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsIdentityCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "UserSettingsMenu" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsMenu: () => JSX.Element; -// Warning: (ae-missing-release-tag) "UserSettingsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsPage: (props: { providerSettings?: JSX.Element | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "UserSettingsPinToggle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsPinToggle: () => JSX.Element; -// Warning: (ae-missing-release-tag) "userSettingsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const userSettingsPlugin: BackstagePlugin< { @@ -103,16 +75,13 @@ const userSettingsPlugin: BackstagePlugin< export { userSettingsPlugin as plugin }; export { userSettingsPlugin }; -// Warning: (ae-missing-release-tag) "UserSettingsProfileCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsProfileCard: () => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "UserSettingsSignInAvatar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const UserSettingsSignInAvatar: ({ size }: Props_4) => JSX.Element; +export const UserSettingsSignInAvatar: (props: { + size?: number; +}) => JSX.Element; // @public export const UserSettingsTab: (props: UserSettingsTabProps) => JSX.Element; @@ -123,13 +92,9 @@ export type UserSettingsTabProps = PropsWithChildren<{ title: string; }>; -// Warning: (ae-missing-release-tag) "UserSettingsThemeToggle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const UserSettingsThemeToggle: () => JSX.Element; -// Warning: (ae-missing-release-tag) "useUserProfile" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const useUserProfile: () => | { diff --git a/plugins/user-settings/src/components/AuthProviders/DefaultProviderSettings.tsx b/plugins/user-settings/src/components/AuthProviders/DefaultProviderSettings.tsx index 019967cf55..f8e1fb190c 100644 --- a/plugins/user-settings/src/components/AuthProviders/DefaultProviderSettings.tsx +++ b/plugins/user-settings/src/components/AuthProviders/DefaultProviderSettings.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import Star from '@material-ui/icons/Star'; import React from 'react'; import { ProviderSettingsItem } from './ProviderSettingsItem'; @@ -27,75 +28,77 @@ import { oneloginAuthApiRef, } from '@backstage/core-plugin-api'; -type Props = { +/** @public */ +export const DefaultProviderSettings = (props: { configuredProviders: string[]; +}) => { + const { configuredProviders } = props; + return ( + <> + {configuredProviders.includes('google') && ( + + )} + {configuredProviders.includes('microsoft') && ( + + )} + {configuredProviders.includes('github') && ( + + )} + {configuredProviders.includes('gitlab') && ( + + )} + {configuredProviders.includes('okta') && ( + + )} + {configuredProviders.includes('bitbucket') && ( + + )} + {configuredProviders.includes('onelogin') && ( + + )} + {configuredProviders.includes('atlassian') && ( + + )} + + ); }; - -export const DefaultProviderSettings = ({ configuredProviders }: Props) => ( - <> - {configuredProviders.includes('google') && ( - - )} - {configuredProviders.includes('microsoft') && ( - - )} - {configuredProviders.includes('github') && ( - - )} - {configuredProviders.includes('gitlab') && ( - - )} - {configuredProviders.includes('okta') && ( - - )} - {configuredProviders.includes('bitbucket') && ( - - )} - {configuredProviders.includes('onelogin') && ( - - )} - {configuredProviders.includes('atlassian') && ( - - )} - -); diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index 53fa127e36..e170aa2daa 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import React, { useEffect, useState } from 'react'; import { Button, @@ -30,19 +31,15 @@ import { SessionState, } from '@backstage/core-plugin-api'; -type Props = { +/** @public */ +export const ProviderSettingsItem = (props: { title: string; description: string; icon: IconComponent; apiRef: ApiRef; -}; +}) => { + const { title, description, icon: Icon, apiRef } = props; -export const ProviderSettingsItem = ({ - title, - description, - icon: Icon, - apiRef, -}: Props) => { const api = useApi(apiRef); const [signedIn, setSignedIn] = useState(false); diff --git a/plugins/user-settings/src/components/AuthProviders/UserSettingsAuthProviders.tsx b/plugins/user-settings/src/components/AuthProviders/UserSettingsAuthProviders.tsx index 8107944781..d23716c2bf 100644 --- a/plugins/user-settings/src/components/AuthProviders/UserSettingsAuthProviders.tsx +++ b/plugins/user-settings/src/components/AuthProviders/UserSettingsAuthProviders.tsx @@ -18,15 +18,14 @@ import React from 'react'; import { List } from '@material-ui/core'; import { EmptyProviders } from './EmptyProviders'; import { DefaultProviderSettings } from './DefaultProviderSettings'; - import { configApiRef, useApi } from '@backstage/core-plugin-api'; import { InfoCard } from '@backstage/core-components'; -type Props = { +/** @public */ +export const UserSettingsAuthProviders = (props: { providerSettings?: JSX.Element; -}; - -export const UserSettingsAuthProviders = ({ providerSettings }: Props) => { +}) => { + const { providerSettings } = props; const configApi = useApi(configApiRef); const providersConfig = configApi.getOptionalConfig('auth.providers'); const configuredProviders = providersConfig?.keys() || []; diff --git a/plugins/user-settings/src/components/FeatureFlags/UserSettingsFeatureFlags.tsx b/plugins/user-settings/src/components/FeatureFlags/UserSettingsFeatureFlags.tsx index e8f488de85..21aafc089e 100644 --- a/plugins/user-settings/src/components/FeatureFlags/UserSettingsFeatureFlags.tsx +++ b/plugins/user-settings/src/components/FeatureFlags/UserSettingsFeatureFlags.tsx @@ -24,7 +24,6 @@ import { } from '@material-ui/core'; import { EmptyFlags } from './EmptyFlags'; import { FlagItem } from './FeatureFlagsItem'; - import { featureFlagsApiRef, FeatureFlagState, @@ -33,6 +32,7 @@ import { import { InfoCard } from '@backstage/core-components'; import ClearIcon from '@material-ui/icons/Clear'; +/** @public */ export const UserSettingsFeatureFlags = () => { const featureFlagsApi = useApi(featureFlagsApiRef); const featureFlags = featureFlagsApi.getRegisteredFlags(); diff --git a/plugins/user-settings/src/components/General/UserSettingsAppearanceCard.tsx b/plugins/user-settings/src/components/General/UserSettingsAppearanceCard.tsx index cd55218db5..6b61edb83b 100644 --- a/plugins/user-settings/src/components/General/UserSettingsAppearanceCard.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsAppearanceCard.tsx @@ -13,12 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { InfoCard, useSidebarPinState } from '@backstage/core-components'; import { List } from '@material-ui/core'; import React from 'react'; import { UserSettingsPinToggle } from './UserSettingsPinToggle'; import { UserSettingsThemeToggle } from './UserSettingsThemeToggle'; +/** @public */ export const UserSettingsAppearanceCard = () => { const { isMobile } = useSidebarPinState(); diff --git a/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx b/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx index db7fdd7be6..8dde87ba5c 100644 --- a/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsGeneral.tsx @@ -13,12 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Grid } from '@material-ui/core'; import React from 'react'; import { UserSettingsProfileCard } from './UserSettingsProfileCard'; import { UserSettingsAppearanceCard } from './UserSettingsAppearanceCard'; import { UserSettingsIdentityCard } from './UserSettingsIdentityCard'; +/** @public */ export const UserSettingsGeneral = () => { return ( diff --git a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx index 908cda1423..1369f4aab8 100644 --- a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { InfoCard } from '@backstage/core-components'; import React from 'react'; import { useUserProfile } from '../useUserProfileInfo'; @@ -20,6 +21,7 @@ import Chip from '@material-ui/core/Chip'; import Grid from '@material-ui/core/Grid'; import Typography from '@material-ui/core/Typography'; +/** @public */ export const UserSettingsIdentityCard = () => { const { backstageIdentity } = useUserProfile(); diff --git a/plugins/user-settings/src/components/General/UserSettingsMenu.tsx b/plugins/user-settings/src/components/General/UserSettingsMenu.tsx index c93de9c636..2483f6cd36 100644 --- a/plugins/user-settings/src/components/General/UserSettingsMenu.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsMenu.tsx @@ -20,6 +20,7 @@ import SignOutIcon from '@material-ui/icons/MeetingRoom'; import MoreVertIcon from '@material-ui/icons/MoreVert'; import { identityApiRef, useApi } from '@backstage/core-plugin-api'; +/** @public */ export const UserSettingsMenu = () => { const identityApi = useApi(identityApiRef); const [open, setOpen] = React.useState(false); diff --git a/plugins/user-settings/src/components/General/UserSettingsPinToggle.tsx b/plugins/user-settings/src/components/General/UserSettingsPinToggle.tsx index d218787c05..a06b079e8e 100644 --- a/plugins/user-settings/src/components/General/UserSettingsPinToggle.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsPinToggle.tsx @@ -24,6 +24,7 @@ import { } from '@material-ui/core'; import { useSidebarPinState } from '@backstage/core-components'; +/** @public */ export const UserSettingsPinToggle = () => { const { isPinned, toggleSidebarPinState } = useSidebarPinState(); diff --git a/plugins/user-settings/src/components/General/UserSettingsProfileCard.tsx b/plugins/user-settings/src/components/General/UserSettingsProfileCard.tsx index 93bb32c5db..3c49121cfc 100644 --- a/plugins/user-settings/src/components/General/UserSettingsProfileCard.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsProfileCard.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Grid, Typography } from '@material-ui/core'; import React from 'react'; import { UserSettingsSignInAvatar } from './UserSettingsSignInAvatar'; @@ -20,6 +21,7 @@ import { UserSettingsMenu } from './UserSettingsMenu'; import { useUserProfile } from '../useUserProfileInfo'; import { InfoCard } from '@backstage/core-components'; +/** @public */ export const UserSettingsProfileCard = () => { const { profile, displayName } = useUserProfile(); diff --git a/plugins/user-settings/src/components/General/UserSettingsSignInAvatar.tsx b/plugins/user-settings/src/components/General/UserSettingsSignInAvatar.tsx index eced74c29c..af1d2969e6 100644 --- a/plugins/user-settings/src/components/General/UserSettingsSignInAvatar.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsSignInAvatar.tsx @@ -29,9 +29,10 @@ const useStyles = makeStyles(theme => ({ }, })); -type Props = { size?: number }; +/** @public */ +export const UserSettingsSignInAvatar = (props: { size?: number }) => { + const { size } = props; -export const UserSettingsSignInAvatar = ({ size }: Props) => { const { iconSize } = sidebarConfig; const classes = useStyles(size ? { size } : { size: iconSize }); const { profile } = useUserProfile(); diff --git a/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx b/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx index 4a28a72818..156ac210fd 100644 --- a/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx @@ -97,6 +97,7 @@ const TooltipToggleButton = ({ ); +/** @public */ export const UserSettingsThemeToggle = () => { const classes = useStyles(); const appThemeApi = useApi(appThemeApiRef); diff --git a/plugins/user-settings/src/components/Settings.tsx b/plugins/user-settings/src/components/Settings.tsx index e9b3ae7d0a..6735b20f87 100644 --- a/plugins/user-settings/src/components/Settings.tsx +++ b/plugins/user-settings/src/components/Settings.tsx @@ -20,11 +20,8 @@ import { settingsRouteRef } from '../plugin'; import { SidebarItem } from '@backstage/core-components'; import { useRouteRef, IconComponent } from '@backstage/core-plugin-api'; -type SettingsProps = { - icon?: IconComponent; -}; - -export const Settings = (props: SettingsProps) => { +/** @public */ +export const Settings = (props: { icon?: IconComponent }) => { const routePath = useRouteRef(settingsRouteRef); const Icon = props.icon ? props.icon : SettingsIcon; return ; diff --git a/plugins/user-settings/src/components/UserSettingsTab/index.ts b/plugins/user-settings/src/components/UserSettingsTab/index.ts index ec7228b7a6..d0645d4efb 100644 --- a/plugins/user-settings/src/components/UserSettingsTab/index.ts +++ b/plugins/user-settings/src/components/UserSettingsTab/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export * from './UserSettingsTab'; diff --git a/plugins/user-settings/src/components/index.ts b/plugins/user-settings/src/components/index.ts index 90a7105876..8dc76ee7f1 100644 --- a/plugins/user-settings/src/components/index.ts +++ b/plugins/user-settings/src/components/index.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { Settings } from './Settings'; export { SettingsPage as Router } from './SettingsPage'; export * from './AuthProviders'; diff --git a/plugins/user-settings/src/components/useUserProfileInfo.ts b/plugins/user-settings/src/components/useUserProfileInfo.ts index c168fc12b4..8b2a41a55f 100644 --- a/plugins/user-settings/src/components/useUserProfileInfo.ts +++ b/plugins/user-settings/src/components/useUserProfileInfo.ts @@ -23,6 +23,7 @@ import { import { useEffect } from 'react'; import useAsync from 'react-use/lib/useAsync'; +/** @public */ export const useUserProfile = () => { const identityApi = useApi(identityApiRef); const alertApi = useApi(alertApiRef); diff --git a/plugins/user-settings/src/plugin.ts b/plugins/user-settings/src/plugin.ts index 01793dc418..4b538b7296 100644 --- a/plugins/user-settings/src/plugin.ts +++ b/plugins/user-settings/src/plugin.ts @@ -24,6 +24,7 @@ export const settingsRouteRef = createRouteRef({ id: 'user-settings', }); +/** @public */ export const userSettingsPlugin = createPlugin({ id: 'user-settings', routes: { @@ -31,6 +32,7 @@ export const userSettingsPlugin = createPlugin({ }, }); +/** @public */ export const UserSettingsPage = userSettingsPlugin.provide( createRoutableExtension({ name: 'UserSettingsPage', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 80ed5d5130..aa24fb2e06 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -233,7 +233,6 @@ const ALLOW_WARNINGS = [ 'plugins/pagerduty', 'plugins/search-backend-module-pg', 'plugins/splunk-on-call', - 'plugins/user-settings', ]; async function resolvePackagePath( From 680b8baebd8323e59edea56519face6fac7ba8a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 12:13:09 +0200 Subject: [PATCH 143/275] gcalendar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/gcalendar/api-report.md | 21 +-------------------- plugins/gcalendar/src/api/client.ts | 11 ++++------- plugins/gcalendar/src/api/index.ts | 1 + plugins/gcalendar/src/api/types.ts | 5 +++++ plugins/gcalendar/src/index.ts | 1 + plugins/gcalendar/src/plugin.ts | 4 +++- scripts/api-extractor.ts | 1 - 7 files changed, 15 insertions(+), 29 deletions(-) diff --git a/plugins/gcalendar/api-report.md b/plugins/gcalendar/api-report.md index 61c39aaf2a..8c86e4d2c9 100644 --- a/plugins/gcalendar/api-report.md +++ b/plugins/gcalendar/api-report.md @@ -12,22 +12,15 @@ import { FetchApi } from '@backstage/core-plugin-api'; import { OAuthApi } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "EventAttendee" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type EventAttendee = gapi.client.calendar.EventAttendee; -// Warning: (ae-missing-release-tag) "GCalendar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GCalendar = gapi.client.calendar.CalendarListEntry; -// Warning: (ae-missing-release-tag) "GCalendarApiClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class GCalendarApiClient { - // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts - constructor(options: Options); + constructor(options: { authApi: OAuthApi; fetchApi: FetchApi }); // (undocumented) getCalendars(params?: any): Promise; // (undocumented) @@ -39,13 +32,9 @@ export class GCalendarApiClient { }>; } -// Warning: (ae-missing-release-tag) "gcalendarApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const gcalendarApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "GCalendarEvent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GCalendarEvent = gapi.client.calendar.Event & Pick & @@ -53,13 +42,9 @@ export type GCalendarEvent = gapi.client.calendar.Event & calendarId?: string; }; -// Warning: (ae-missing-release-tag) "GCalendarList" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GCalendarList = gapi.client.calendar.CalendarList; -// Warning: (ae-missing-release-tag) "gcalendarPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const gcalendarPlugin: BackstagePlugin< { @@ -69,13 +54,9 @@ export const gcalendarPlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "HomePageCalendar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const HomePageCalendar: () => JSX.Element; -// Warning: (ae-missing-release-tag) "ResponseStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum ResponseStatus { // (undocumented) diff --git a/plugins/gcalendar/src/api/client.ts b/plugins/gcalendar/src/api/client.ts index 084c302636..0f5b56cc08 100644 --- a/plugins/gcalendar/src/api/client.ts +++ b/plugins/gcalendar/src/api/client.ts @@ -13,25 +13,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { OAuthApi, createApiRef, FetchApi } from '@backstage/core-plugin-api'; +import { OAuthApi, createApiRef, FetchApi } from '@backstage/core-plugin-api'; import { GCalendarEvent, GCalendarList } from './types'; import { ResponseError } from '@backstage/errors'; -type Options = { - authApi: OAuthApi; - fetchApi: FetchApi; -}; - +/** @public */ export const gcalendarApiRef = createApiRef({ id: 'plugin.gcalendar.service', }); +/** @public */ export class GCalendarApiClient { private readonly authApi: OAuthApi; private readonly fetchApi: FetchApi; - constructor(options: Options) { + constructor(options: { authApi: OAuthApi; fetchApi: FetchApi }) { this.authApi = options.authApi; this.fetchApi = options.fetchApi; } diff --git a/plugins/gcalendar/src/api/index.ts b/plugins/gcalendar/src/api/index.ts index 4c195158d3..09cc21a2d0 100644 --- a/plugins/gcalendar/src/api/index.ts +++ b/plugins/gcalendar/src/api/index.ts @@ -13,5 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export * from './client'; export * from './types'; diff --git a/plugins/gcalendar/src/api/types.ts b/plugins/gcalendar/src/api/types.ts index 5c8bbdd1c1..9b1b508762 100644 --- a/plugins/gcalendar/src/api/types.ts +++ b/plugins/gcalendar/src/api/types.ts @@ -16,18 +16,23 @@ /// +/** @public */ export type GCalendarList = gapi.client.calendar.CalendarList; +/** @public */ export type GCalendar = gapi.client.calendar.CalendarListEntry; +/** @public */ export type EventAttendee = gapi.client.calendar.EventAttendee; +/** @public */ export type GCalendarEvent = gapi.client.calendar.Event & Pick & Pick & { calendarId?: string; }; +/** @public */ export enum ResponseStatus { needsAction = 'needsAction', accepted = 'accepted', diff --git a/plugins/gcalendar/src/index.ts b/plugins/gcalendar/src/index.ts index 7c7f0c6374..37d51d0ef4 100644 --- a/plugins/gcalendar/src/index.ts +++ b/plugins/gcalendar/src/index.ts @@ -13,5 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { gcalendarPlugin, HomePageCalendar } from './plugin'; export * from './api'; diff --git a/plugins/gcalendar/src/plugin.ts b/plugins/gcalendar/src/plugin.ts index 1f98f560f1..06c3922087 100644 --- a/plugins/gcalendar/src/plugin.ts +++ b/plugins/gcalendar/src/plugin.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { createApiFactory, createComponentExtension, @@ -20,10 +21,10 @@ import { fetchApiRef, googleAuthApiRef, } from '@backstage/core-plugin-api'; - import { GCalendarApiClient, gcalendarApiRef } from './api'; import { rootRouteRef } from './routes'; +/** @public */ export const gcalendarPlugin = createPlugin({ id: 'gcalendar', routes: { @@ -40,6 +41,7 @@ export const gcalendarPlugin = createPlugin({ ], }); +/** @public */ export const HomePageCalendar = gcalendarPlugin.provide( createComponentExtension({ name: 'HomePageCalendar', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index aa24fb2e06..98398ca5d9 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -215,7 +215,6 @@ const ALLOW_WARNINGS = [ 'plugins/explore', 'plugins/explore-react', 'plugins/firehydrant', - 'plugins/gcalendar', 'plugins/gcp-projects', 'plugins/git-release-manager', 'plugins/github-actions', From 5b541a09f403fccff55890deb8688cd17fc507da Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 10:13:53 +0000 Subject: [PATCH 144/275] chore(deps): update dependency puppeteer to v16.2.0 Signed-off-by: Renovate Bot --- yarn.lock | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8a35905af9..b04710edfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21009,13 +21009,6 @@ pixelmatch@^4.0.2: dependencies: pngjs "^3.0.0" -pkg-dir@4.2.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -21023,6 +21016,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" @@ -21735,16 +21735,15 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== puppeteer@^16.0.0: - version "16.1.1" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.1.tgz#1bb8ec3b86f755c34b913421b81e9cd2cfad3588" - integrity sha512-lBneizsNF0zi1/iog9c0ogVnvDHJG4IWpkdIAgE2oiDKhr0MJRV8JeM2xbhUwCwhDJXjjVS2TNCZdLsMp9Ojdg== + version "16.2.0" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-16.2.0.tgz#3fc9cc0c461d3166a98562a7dcd0bf3424a0523c" + integrity sha512-7Au6iC98rS6WEAD110V4Bxd0iIbqoFtzz9XzkG1BSofidS1VAJ881E1+GFR7Xn2Yea0hbj8n0ErzRyseMp1Ctg== dependencies: cross-fetch "3.1.5" debug "4.3.4" devtools-protocol "0.0.1019158" extract-zip "2.0.1" https-proxy-agent "5.0.1" - pkg-dir "4.2.0" progress "2.0.3" proxy-from-env "1.1.0" rimraf "3.0.2" From c964eeb8941f8bd8676bfa880cab81bc80cfac70 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 10:15:40 +0000 Subject: [PATCH 145/275] fix(deps): update dependency json-schema-library to v6.1.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8a35905af9..f1c74e58e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17014,9 +17014,9 @@ json-schema-compare@^0.2.2: lodash "^4.17.4" json-schema-library@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/json-schema-library/-/json-schema-library-6.0.0.tgz#2a823d850031842c6917f41a8c576af3b603ab48" - integrity sha512-1nTpSmyfmgJpaNPIBO1SnHpXiMUh76hZnqSuCrJr7Lcu2N2SB55UPgf5F790r4dy4i4o/Moaw7OdqDhEmxP/Rw== + version "6.1.0" + resolved "https://registry.npmjs.org/json-schema-library/-/json-schema-library-6.1.0.tgz#dc811698dcc0364d869dc5dfc509acab8cc63de3" + integrity sha512-Ql7sz3sdGyDeyRygbhcPs/iBebarA7PgTa1gLMmx54u64kC1IpCiNar4bgw3c02ReElfZ43d/t5eKX33r1MD2w== dependencies: deepmerge "^4.2.2" fast-deep-equal "^3.1.3" From 5e918f43e61a79149a2298e874f50f0359c0fc58 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 19 Aug 2022 11:22:43 +0100 Subject: [PATCH 146/275] fix: change description on changeset Signed-off-by: Alisson Fabiano --- .changeset/weak-yaks-learn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/weak-yaks-learn.md b/.changeset/weak-yaks-learn.md index bf0e3eafd0..aa45c79524 100644 --- a/.changeset/weak-yaks-learn.md +++ b/.changeset/weak-yaks-learn.md @@ -8,7 +8,7 @@ Added README card for Azure Devops **Before:** -Remember to check if you have already provided these settings previously, as we will need them for the reame card to work. +Remember to check if you have already provided these settings previously, as we will need them for the reamde card to work. #### [Azure DevOps](https://github.com/backstage/backstage/blob/master/app-config.yaml#L48L51:~:text=azureDevOps%3A,%3A%20my%2Dcompany) From 3ec16d2c4187dc9e3a1e4bbb94a75d80ad98c612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 12:25:57 +0200 Subject: [PATCH 147/275] splunk-on-call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/splunk-on-call/api-report.md | 246 +++++++++++++++--- plugins/splunk-on-call/src/api/client.ts | 3 + plugins/splunk-on-call/src/api/index.ts | 2 +- plugins/splunk-on-call/src/api/types.ts | 10 + .../src/components/EntitySplunkOnCallCard.tsx | 1 + .../src/components/SplunkOnCallPage.tsx | 1 + .../splunk-on-call/src/components/index.ts | 20 ++ .../splunk-on-call/src/components/types.ts | 16 ++ plugins/splunk-on-call/src/index.ts | 8 +- plugins/splunk-on-call/src/plugin.ts | 3 + scripts/api-extractor.ts | 1 - 11 files changed, 269 insertions(+), 42 deletions(-) create mode 100644 plugins/splunk-on-call/src/components/index.ts diff --git a/plugins/splunk-on-call/api-report.md b/plugins/splunk-on-call/api-report.md index b24a68e07a..e0609c5b82 100644 --- a/plugins/splunk-on-call/api-report.md +++ b/plugins/splunk-on-call/api-report.md @@ -12,62 +12,207 @@ import { DiscoveryApi } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-forgotten-export) The symbol "EntitySplunkOnCallCardProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "EntitySplunkOnCallCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type ClientApiConfig = { + eventsRestEndpoint: string | null; + discoveryApi: DiscoveryApi; +}; + // @public (undocumented) export const EntitySplunkOnCallCard: ( props: EntitySplunkOnCallCardProps, ) => JSX.Element; -// Warning: (ae-missing-release-tag) "isSplunkOnCallAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type EntitySplunkOnCallCardProps = { + readOnly?: boolean; +}; + +// @public (undocumented) +export type EscalationPolicyInfo = { + policy: EscalationPolicySummary; + team?: EscalationPolicyTeam; +}; + +// @public (undocumented) +export type EscalationPolicyResponse = { + policies: EscalationPolicyInfo[]; +}; + +// @public (undocumented) +export type EscalationPolicySummary = { + name: string; + slug: string; + _selfUrl: string; +}; + +// @public (undocumented) +export type EscalationPolicyTeam = { + name: string; + slug: string; +}; + +// @public (undocumented) +export type Incident = { + incidentNumber?: string; + startTime?: string; + currentPhase: IncidentPhase; + entityState?: string; + entityType?: string; + routingKey?: string; + alertCount?: number; + lastAlertTime?: string; + lastAlertId?: string; + entityId: string; + host?: string; + service?: string; + pagedUsers?: string[]; + pagedTeams?: string[]; + entityDisplayName?: string; + pagedPolicies?: EscalationPolicyInfo[]; + transitions?: IncidentTransition[]; + firstAlertUuid?: string; + monitorName?: string; + monitorType?: string; + incidentLink?: string; +}; + +// @public (undocumented) +export type IncidentPhase = 'UNACKED' | 'ACKED' | 'RESOLVED'; + +// @public (undocumented) +export type IncidentsResponse = { + incidents: Incident[]; +}; + +// @public (undocumented) +export type IncidentTransition = { + name?: string; + at?: string; + by?: string; + message?: string; + manually?: boolean; + alertId?: string; + alertUrl?: string; +}; + // @public (undocumented) export const isSplunkOnCallAvailable: (entity: Entity) => boolean; -// Warning: (ae-forgotten-export) The symbol "SplunkOnCallApi" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "splunkOnCallApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type ListRoutingKeyResponse = { + routingKeys: RoutingKey[]; + _selfUrl?: string; +}; + +// @public (undocumented) +export type ListUserResponse = { + users: User[]; + _selfUrl?: string; +}; + +// @public (undocumented) +export type MessageType = + | 'CRITICAL' + | 'WARNING' + | 'ACKNOWLEDGEMENT' + | 'INFO' + | 'RECOVERY'; + +// @public (undocumented) +export type OnCall = { + team?: OnCallTeamResource; + oncallNow?: OnCallNowResource[]; +}; + +// @public (undocumented) +export type OnCallEscalationPolicyResource = { + name?: string; + slug?: string; +}; + +// @public (undocumented) +export type OnCallNowResource = { + escalationPolicy?: OnCallEscalationPolicyResource; + users?: OnCallUsersResource[]; +}; + +// @public (undocumented) +export type OnCallsResponse = { + teamsOnCall: OnCall[]; +}; + +// @public (undocumented) +export type OnCallTeamResource = { + name?: string; + slug?: string; +}; + +// @public (undocumented) +export type OnCallUser = { + username?: string; +}; + +// @public (undocumented) +export type OnCallUsersResource = { + onCalluser?: OnCallUser; +}; + +// @public (undocumented) +export type RequestOptions = { + method: string; + headers: HeadersInit; + body?: BodyInit; +}; + +// @public (undocumented) +export type RoutingKey = { + routingKey: string; + targets: RoutingKeyTarget[]; + isDefault: boolean; +}; + +// @public (undocumented) +export type RoutingKeyTarget = { + policyName: string; + policySlug: string; + _teamUrl: string; +}; + +// @public (undocumented) +export interface SplunkOnCallApi { + getEscalationPolicies(): Promise; + getIncidents(): Promise; + getOnCallUsers(): Promise; + getRoutingKeys(): Promise; + getTeams(): Promise; + getUsers(): Promise; + incidentAction(request: TriggerAlarmRequest): Promise; +} + // @public (undocumented) export const splunkOnCallApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "SplunkOnCallClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class SplunkOnCallClient implements SplunkOnCallApi { - // Warning: (ae-forgotten-export) The symbol "ClientApiConfig" needs to be exported by the entry point index.d.ts constructor(config: ClientApiConfig); // (undocumented) static fromConfig( configApi: ConfigApi, discoveryApi: DiscoveryApi, ): SplunkOnCallClient; - // Warning: (ae-forgotten-export) The symbol "EscalationPolicyInfo" needs to be exported by the entry point index.d.ts - // // (undocumented) getEscalationPolicies(): Promise; - // Warning: (ae-forgotten-export) The symbol "Incident" needs to be exported by the entry point index.d.ts - // // (undocumented) getIncidents(): Promise; - // Warning: (ae-forgotten-export) The symbol "OnCall" needs to be exported by the entry point index.d.ts - // // (undocumented) getOnCallUsers(): Promise; - // Warning: (ae-forgotten-export) The symbol "RoutingKey" needs to be exported by the entry point index.d.ts - // // (undocumented) getRoutingKeys(): Promise; - // Warning: (ae-forgotten-export) The symbol "Team" needs to be exported by the entry point index.d.ts - // // (undocumented) getTeams(): Promise; - // Warning: (ae-forgotten-export) The symbol "User" needs to be exported by the entry point index.d.ts - // // (undocumented) getUsers(): Promise; - // Warning: (ae-forgotten-export) The symbol "TriggerAlarmRequest" needs to be exported by the entry point index.d.ts - // // (undocumented) incidentAction({ routingKey, @@ -79,8 +224,6 @@ export class SplunkOnCallClient implements SplunkOnCallApi { }: TriggerAlarmRequest): Promise; } -// Warning: (ae-missing-release-tag) "SplunkOnCallPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const SplunkOnCallPage: { ({ title, subtitle, pageTitle }: SplunkOnCallPageProps): JSX.Element; @@ -91,8 +234,13 @@ export const SplunkOnCallPage: { }; }; -// Warning: (ae-missing-release-tag) "splunkOnCallPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type SplunkOnCallPageProps = { + title?: string; + subtitle?: string; + pageTitle?: string; +}; + // @public (undocumented) const splunkOnCallPlugin: BackstagePlugin< { @@ -104,12 +252,42 @@ const splunkOnCallPlugin: BackstagePlugin< export { splunkOnCallPlugin as plugin }; export { splunkOnCallPlugin }; -// Warning: (ae-missing-release-tag) "UnauthorizedError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type Team = { + name?: string; + slug?: string; + memberCount?: number; + version?: number; + isDefaultTeam?: boolean; + _selfUrl?: string; + _policiesUrl?: string; + _membersUrl?: string; + _adminsUrl?: string; +}; + +// @public (undocumented) +export type TriggerAlarmRequest = { + routingKey?: string; + incidentType: MessageType; + incidentId?: string; + incidentDisplayName?: string; + incidentMessage?: string; + incidentStartTime?: number; +}; + // @public (undocumented) export class UnauthorizedError extends Error {} -// Warnings were encountered during analysis: -// -// src/plugin.d.ts:7:5 - (ae-forgotten-export) The symbol "SplunkOnCallPageProps" needs to be exported by the entry point index.d.ts +// @public (undocumented) +export type User = { + firstName?: string; + lastName?: string; + displayName?: string; + username?: string; + email?: string; + createdAt?: string; + passwordLastUpdated?: string; + verified?: boolean; + _selfUrl?: string; +}; ``` diff --git a/plugins/splunk-on-call/src/api/client.ts b/plugins/splunk-on-call/src/api/client.ts index 6c0ff9bdc4..aa655a4772 100644 --- a/plugins/splunk-on-call/src/api/client.ts +++ b/plugins/splunk-on-call/src/api/client.ts @@ -39,12 +39,15 @@ import { ConfigApi, } from '@backstage/core-plugin-api'; +/** @public */ export class UnauthorizedError extends Error {} +/** @public */ export const splunkOnCallApiRef = createApiRef({ id: 'plugin.splunk-on-call.api', }); +/** @public */ export class SplunkOnCallClient implements SplunkOnCallApi { static fromConfig(configApi: ConfigApi, discoveryApi: DiscoveryApi) { const eventsRestEndpoint: string | null = diff --git a/plugins/splunk-on-call/src/api/index.ts b/plugins/splunk-on-call/src/api/index.ts index 8b38168fc9..ecfb7acca7 100644 --- a/plugins/splunk-on-call/src/api/index.ts +++ b/plugins/splunk-on-call/src/api/index.ts @@ -19,4 +19,4 @@ export { splunkOnCallApiRef, UnauthorizedError, } from './client'; -export type { SplunkOnCallApi } from './types'; +export * from './types'; diff --git a/plugins/splunk-on-call/src/api/types.ts b/plugins/splunk-on-call/src/api/types.ts index 6a414d18bd..427eb8bbca 100644 --- a/plugins/splunk-on-call/src/api/types.ts +++ b/plugins/splunk-on-call/src/api/types.ts @@ -24,6 +24,7 @@ import { } from '../components/types'; import { DiscoveryApi } from '@backstage/core-plugin-api'; +/** @public */ export type MessageType = | 'CRITICAL' | 'WARNING' @@ -31,6 +32,7 @@ export type MessageType = | 'INFO' | 'RECOVERY'; +/** @public */ export type TriggerAlarmRequest = { routingKey?: string; incidentType: MessageType; @@ -40,6 +42,7 @@ export type TriggerAlarmRequest = { incidentStartTime?: number; }; +/** @public */ export interface SplunkOnCallApi { /** * Fetches a list of incidents @@ -77,33 +80,40 @@ export interface SplunkOnCallApi { getEscalationPolicies(): Promise; } +/** @public */ export type EscalationPolicyResponse = { policies: EscalationPolicyInfo[]; }; +/** @public */ export type ListUserResponse = { users: User[]; _selfUrl?: string; }; +/** @public */ export type ListRoutingKeyResponse = { routingKeys: RoutingKey[]; _selfUrl?: string; }; +/** @public */ export type IncidentsResponse = { incidents: Incident[]; }; +/** @public */ export type OnCallsResponse = { teamsOnCall: OnCall[]; }; +/** @public */ export type ClientApiConfig = { eventsRestEndpoint: string | null; discoveryApi: DiscoveryApi; }; +/** @public */ export type RequestOptions = { method: string; headers: HeadersInit; diff --git a/plugins/splunk-on-call/src/components/EntitySplunkOnCallCard.tsx b/plugins/splunk-on-call/src/components/EntitySplunkOnCallCard.tsx index 4f6bcd9a0e..d635f7328f 100644 --- a/plugins/splunk-on-call/src/components/EntitySplunkOnCallCard.tsx +++ b/plugins/splunk-on-call/src/components/EntitySplunkOnCallCard.tsx @@ -99,6 +99,7 @@ export const MissingEventsRestEndpoint = () => ( ); +/** @public */ export const isSplunkOnCallAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[SPLUNK_ON_CALL_TEAM]) || Boolean(entity.metadata.annotations?.[SPLUNK_ON_CALL_ROUTING_KEY]); diff --git a/plugins/splunk-on-call/src/components/SplunkOnCallPage.tsx b/plugins/splunk-on-call/src/components/SplunkOnCallPage.tsx index 1f5bb49410..0c8b223857 100644 --- a/plugins/splunk-on-call/src/components/SplunkOnCallPage.tsx +++ b/plugins/splunk-on-call/src/components/SplunkOnCallPage.tsx @@ -31,6 +31,7 @@ const useStyles = makeStyles(() => ({ }, })); +/** @public */ export type SplunkOnCallPageProps = { title?: string; subtitle?: string; diff --git a/plugins/splunk-on-call/src/components/index.ts b/plugins/splunk-on-call/src/components/index.ts new file mode 100644 index 0000000000..47fd7fbf27 --- /dev/null +++ b/plugins/splunk-on-call/src/components/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type { SplunkOnCallPageProps } from './SplunkOnCallPage'; +export type { EntitySplunkOnCallCardProps } from './EntitySplunkOnCallCard'; +export { isSplunkOnCallAvailable } from './EntitySplunkOnCallCard'; +export * from './types'; diff --git a/plugins/splunk-on-call/src/components/types.ts b/plugins/splunk-on-call/src/components/types.ts index 0feefe8b03..7e83de84a7 100644 --- a/plugins/splunk-on-call/src/components/types.ts +++ b/plugins/splunk-on-call/src/components/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export type Team = { name?: string; slug?: string; @@ -26,34 +27,41 @@ export type Team = { _adminsUrl?: string; }; +/** @public */ export type OnCall = { team?: OnCallTeamResource; oncallNow?: OnCallNowResource[]; }; +/** @public */ export type OnCallTeamResource = { name?: string; slug?: string; }; +/** @public */ export type OnCallNowResource = { escalationPolicy?: OnCallEscalationPolicyResource; users?: OnCallUsersResource[]; }; +/** @public */ export type OnCallEscalationPolicyResource = { name?: string; slug?: string; }; +/** @public */ export type OnCallUsersResource = { onCalluser?: OnCallUser; }; +/** @public */ export type OnCallUser = { username?: string; }; +/** @public */ export type User = { firstName?: string; lastName?: string; @@ -66,8 +74,10 @@ export type User = { _selfUrl?: string; }; +/** @public */ export type IncidentPhase = 'UNACKED' | 'ACKED' | 'RESOLVED'; +/** @public */ export type Incident = { incidentNumber?: string; startTime?: string; @@ -92,11 +102,13 @@ export type Incident = { incidentLink?: string; }; +/** @public */ export type EscalationPolicyInfo = { policy: EscalationPolicySummary; team?: EscalationPolicyTeam; }; +/** @public */ export type IncidentTransition = { name?: string; at?: string; @@ -107,23 +119,27 @@ export type IncidentTransition = { alertUrl?: string; }; +/** @public */ export type EscalationPolicySummary = { name: string; slug: string; _selfUrl: string; }; +/** @public */ export type EscalationPolicyTeam = { name: string; slug: string; }; +/** @public */ export type RoutingKey = { routingKey: string; targets: RoutingKeyTarget[]; isDefault: boolean; }; +/** @public */ export type RoutingKeyTarget = { policyName: string; policySlug: string; diff --git a/plugins/splunk-on-call/src/index.ts b/plugins/splunk-on-call/src/index.ts index 917106504b..285e6c8f89 100644 --- a/plugins/splunk-on-call/src/index.ts +++ b/plugins/splunk-on-call/src/index.ts @@ -26,9 +26,5 @@ export { splunkOnCallPlugin as plugin, SplunkOnCallPage, } from './plugin'; -export { isSplunkOnCallAvailable } from './components/EntitySplunkOnCallCard'; -export { - SplunkOnCallClient, - splunkOnCallApiRef, - UnauthorizedError, -} from './api/client'; +export * from './components'; +export * from './api'; diff --git a/plugins/splunk-on-call/src/plugin.ts b/plugins/splunk-on-call/src/plugin.ts index 2256b382ee..f1fa08bfcc 100644 --- a/plugins/splunk-on-call/src/plugin.ts +++ b/plugins/splunk-on-call/src/plugin.ts @@ -26,6 +26,7 @@ import { export const rootRouteRef = createRouteRef({ id: 'splunk-on-call' }); +/** @public */ export const splunkOnCallPlugin = createPlugin({ id: 'splunk-on-call', apis: [ @@ -41,6 +42,7 @@ export const splunkOnCallPlugin = createPlugin({ }, }); +/** @public */ export const SplunkOnCallPage = splunkOnCallPlugin.provide( createRoutableExtension({ name: 'SplunkOnCallPage', @@ -50,6 +52,7 @@ export const SplunkOnCallPage = splunkOnCallPlugin.provide( }), ); +/** @public */ export const EntitySplunkOnCallCard = splunkOnCallPlugin.provide( createComponentExtension({ name: 'EntitySplunkOnCallCard', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 98398ca5d9..4713d85487 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -231,7 +231,6 @@ const ALLOW_WARNINGS = [ 'plugins/newrelic-dashboard', 'plugins/pagerduty', 'plugins/search-backend-module-pg', - 'plugins/splunk-on-call', ]; async function resolvePackagePath( From 6a001acf8c69b645e398631874cde8a2f053db6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 12:31:26 +0200 Subject: [PATCH 148/275] plugin-search-backend-module-pg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../search-backend-module-pg/api-report.md | 26 +++++++------------ .../src/PgSearchEngine/PgSearchEngine.ts | 2 ++ .../PgSearchEngine/PgSearchEngineIndexer.ts | 2 ++ .../src/PgSearchEngine/index.ts | 1 + .../src/database/DatabaseDocumentStore.ts | 1 + .../src/database/index.ts | 8 +++++- .../src/database/types.ts | 4 +++ scripts/api-extractor.ts | 1 - 8 files changed, 27 insertions(+), 18 deletions(-) diff --git a/plugins/search-backend-module-pg/api-report.md b/plugins/search-backend-module-pg/api-report.md index 33d0f4318c..d35bac66aa 100644 --- a/plugins/search-backend-module-pg/api-report.md +++ b/plugins/search-backend-module-pg/api-report.md @@ -18,8 +18,6 @@ export type ConcretePgSearchQuery = { pageSize: number; }; -// Warning: (ae-missing-release-tag) "DatabaseDocumentStore" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class DatabaseDocumentStore implements DatabaseStore { constructor(db: Knex); @@ -39,8 +37,6 @@ export class DatabaseDocumentStore implements DatabaseStore { ): Promise; // (undocumented) prepareInsert(tx: Knex.Transaction): Promise; - // Warning: (ae-forgotten-export) The symbol "DocumentResultRow" needs to be exported by the entry point index.d.ts - // // (undocumented) query( tx: Knex.Transaction, @@ -52,8 +48,6 @@ export class DatabaseDocumentStore implements DatabaseStore { transaction(fn: (tx: Knex.Transaction) => Promise): Promise; } -// Warning: (ae-missing-release-tag) "DatabaseStore" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface DatabaseStore { // (undocumented) @@ -77,8 +71,16 @@ export interface DatabaseStore { transaction(fn: (tx: Knex.Transaction) => Promise): Promise; } -// Warning: (ae-missing-release-tag) "PgSearchEngine" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export interface DocumentResultRow { + // (undocumented) + document: IndexableDocument; + // (undocumented) + highlight: IndexableDocument; + // (undocumented) + type: string; +} + // @public (undocumented) export class PgSearchEngine implements SearchEngine { // @deprecated @@ -108,8 +110,6 @@ export class PgSearchEngine implements SearchEngine { ): ConcretePgSearchQuery; } -// Warning: (ae-missing-release-tag) "PgSearchEngineIndexer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class PgSearchEngineIndexer extends BatchSearchEngineIndexer { constructor(options: PgSearchEngineIndexerOptions); @@ -121,8 +121,6 @@ export class PgSearchEngineIndexer extends BatchSearchEngineIndexer { initialize(): Promise; } -// Warning: (ae-missing-release-tag) "PgSearchEngineIndexerOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PgSearchEngineIndexerOptions = { batchSize: number; @@ -148,8 +146,6 @@ export type PgSearchOptions = { database: PluginDatabaseManager; }; -// Warning: (ae-missing-release-tag) "PgSearchQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface PgSearchQuery { // (undocumented) @@ -177,8 +173,6 @@ export type PgSearchQueryTranslatorOptions = { highlightOptions: PgSearchHighlightOptions; }; -// Warning: (ae-missing-release-tag) "RawDocumentRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RawDocumentRow { // (undocumented) diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts index cd99a8c4b1..01fe0fff82 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { PluginDatabaseManager } from '@backstage/backend-common'; import { SearchEngine } from '@backstage/plugin-search-common'; import { @@ -79,6 +80,7 @@ export type PgSearchHighlightOptions = { postTag: string; }; +/** @public */ export class PgSearchEngine implements SearchEngine { private readonly highlightOptions: PgSearchHighlightOptions; diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts index fa27509a69..e3dbe82751 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts @@ -19,12 +19,14 @@ import { IndexableDocument } from '@backstage/plugin-search-common'; import { Knex } from 'knex'; import { DatabaseStore } from '../database'; +/** @public */ export type PgSearchEngineIndexerOptions = { batchSize: number; type: string; databaseStore: DatabaseStore; }; +/** @public */ export class PgSearchEngineIndexer extends BatchSearchEngineIndexer { private store: DatabaseStore; private type: string; diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/index.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/index.ts index e9ea04e5c4..e62e709f26 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/index.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/index.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { PgSearchEngine } from './PgSearchEngine'; export type { ConcretePgSearchQuery, diff --git a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts index 4da3cca082..023992a335 100644 --- a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts +++ b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts @@ -32,6 +32,7 @@ const migrationsDir = resolvePackagePath( 'migrations', ); +/** @public */ export class DatabaseDocumentStore implements DatabaseStore { static async create( database: PluginDatabaseManager, diff --git a/plugins/search-backend-module-pg/src/database/index.ts b/plugins/search-backend-module-pg/src/database/index.ts index d2ca3ba3da..69441d56ec 100644 --- a/plugins/search-backend-module-pg/src/database/index.ts +++ b/plugins/search-backend-module-pg/src/database/index.ts @@ -13,5 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { DatabaseDocumentStore } from './DatabaseDocumentStore'; -export type { DatabaseStore, PgSearchQuery, RawDocumentRow } from './types'; +export type { + DatabaseStore, + DocumentResultRow, + PgSearchQuery, + RawDocumentRow, +} from './types'; diff --git a/plugins/search-backend-module-pg/src/database/types.ts b/plugins/search-backend-module-pg/src/database/types.ts index 151be7d13f..f330651cef 100644 --- a/plugins/search-backend-module-pg/src/database/types.ts +++ b/plugins/search-backend-module-pg/src/database/types.ts @@ -17,6 +17,7 @@ import { IndexableDocument } from '@backstage/plugin-search-common'; import { Knex } from 'knex'; import { PgSearchHighlightOptions } from '../PgSearchEngine'; +/** @public */ export interface PgSearchQuery { fields?: Record; types?: string[]; @@ -26,6 +27,7 @@ export interface PgSearchQuery { options: PgSearchHighlightOptions; } +/** @public */ export interface DatabaseStore { transaction(fn: (tx: Knex.Transaction) => Promise): Promise; getTransaction(): Promise; @@ -42,12 +44,14 @@ export interface DatabaseStore { ): Promise; } +/** @public */ export interface RawDocumentRow { document: IndexableDocument; type: string; hash: unknown; } +/** @public */ export interface DocumentResultRow { document: IndexableDocument; type: string; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 4713d85487..fd1254b07d 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -230,7 +230,6 @@ const ALLOW_WARNINGS = [ 'plugins/newrelic', 'plugins/newrelic-dashboard', 'plugins/pagerduty', - 'plugins/search-backend-module-pg', ]; async function resolvePackagePath( From 4b095e031a2e03057ed2d5fbb50a9af3dfe78427 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 19 Aug 2022 11:57:07 +0100 Subject: [PATCH 149/275] docs: add api-reports Signed-off-by: Alisson Fabiano --- plugins/azure-devops-backend/api-report.md | 8 +++++--- plugins/azure-devops-common/api-report.md | 6 ------ plugins/azure-devops/api-report.md | 6 ++---- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/plugins/azure-devops-backend/api-report.md b/plugins/azure-devops-backend/api-report.md index fc13fcb371..900b3c3d12 100644 --- a/plugins/azure-devops-backend/api-report.md +++ b/plugins/azure-devops-backend/api-report.md @@ -74,9 +74,9 @@ export class AzureDevOpsApi { // (undocumented) getReadme( host: string, - organization: string, - projectName: string, - repoName: string, + org: string, + project: string, + repo: string, ): Promise<{ url: string; content: string; @@ -105,6 +105,8 @@ export interface RouterOptions { config: Config; // (undocumented) logger: Logger; + // (undocumented) + reader: UrlReader; } // (No @packageDocumentation comment for this package) diff --git a/plugins/azure-devops-common/api-report.md b/plugins/azure-devops-common/api-report.md index 3dc354b519..ea9f7130c0 100644 --- a/plugins/azure-devops-common/api-report.md +++ b/plugins/azure-devops-common/api-report.md @@ -197,8 +197,6 @@ export enum PullRequestVoteStatus { WaitingForAuthor = -5, } -// Warning: (ae-missing-release-tag) "Readme" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Readme { // (undocumented) @@ -207,8 +205,6 @@ export interface Readme { url: string; } -// Warning: (ae-missing-release-tag) "ReadmeConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ReadmeConfig { // (undocumented) @@ -217,8 +213,6 @@ export interface ReadmeConfig { repo: string; } -// Warning: (ae-missing-release-tag) "RepoBuild" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type RepoBuild = { id?: number; diff --git a/plugins/azure-devops/api-report.md b/plugins/azure-devops/api-report.md index 2d9405aebe..5d59f263fb 100644 --- a/plugins/azure-devops/api-report.md +++ b/plugins/azure-devops/api-report.md @@ -93,7 +93,7 @@ export interface AzureDevOpsApi { items: PullRequest[]; }>; // (undocumented) - getReadme(opts: ReadmeConfig): Promise; + getReadme(opts: ReadmeConfig): Promise; // (undocumented) getRepoBuilds( projectName: string, @@ -146,7 +146,7 @@ export class AzureDevOpsClient implements AzureDevOpsApi { items: PullRequest[]; }>; // (undocumented) - getReadme: (opts: ReadmeConfig) => Promise; + getReadme(opts: ReadmeConfig): Promise; // (undocumented) getRepoBuilds( projectName: string, @@ -242,8 +242,6 @@ export const EntityAzureReadmeCard: (props: { maxHeight?: number | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "Filter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Filter = | AssignedToUserFilter From 9a5a1681c10ab83020e6eaaf9b7c6d9fd7ca083f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:10:51 +0200 Subject: [PATCH 150/275] pagerduty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/pagerduty/api-report.md | 61 +++++-------------- plugins/pagerduty/src/api/client.ts | 3 + plugins/pagerduty/src/api/index.ts | 1 + plugins/pagerduty/src/api/types.ts | 8 +++ .../src/components/PagerDutyCard/index.tsx | 2 + .../src/components/TriggerButton/index.tsx | 7 +-- plugins/pagerduty/src/components/types.ts | 7 +++ plugins/pagerduty/src/plugin.ts | 2 + plugins/pagerduty/src/types.ts | 1 + scripts/api-extractor.ts | 1 - 10 files changed, 40 insertions(+), 53 deletions(-) diff --git a/plugins/pagerduty/api-report.md b/plugins/pagerduty/api-report.md index 8bd8df6f7c..5bfe84e63f 100644 --- a/plugins/pagerduty/api-report.md +++ b/plugins/pagerduty/api-report.md @@ -13,26 +13,30 @@ import { Entity } from '@backstage/catalog-model'; import { FetchApi } from '@backstage/core-plugin-api'; import { ReactNode } from 'react'; -// Warning: (ae-missing-release-tag) "EntityPagerDutyCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityPagerDutyCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "isPluginApplicableToEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; export { isPluginApplicableToEntity as isPagerDutyAvailable }; export { isPluginApplicableToEntity }; -// Warning: (ae-forgotten-export) The symbol "PagerDutyApi" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "pagerDutyApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export interface PagerDutyApi { + getChangeEventsByServiceId( + serviceId: string, + ): Promise; + getIncidentsByServiceId( + serviceId: string, + ): Promise; + getOnCallByPolicyId(policyId: string): Promise; + getServiceByEntity(entity: Entity): Promise; + triggerAlarm(request: PagerDutyTriggerAlarmRequest): Promise; +} + // @public (undocumented) export const pagerDutyApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "PagerDutyAssignee" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyAssignee = { id: string; @@ -40,13 +44,9 @@ export type PagerDutyAssignee = { html_url: string; }; -// Warning: (ae-missing-release-tag) "PagerDutyCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const PagerDutyCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "PagerDutyChangeEvent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyChangeEvent = { id: string; @@ -67,15 +67,11 @@ export type PagerDutyChangeEvent = { timestamp: string; }; -// Warning: (ae-missing-release-tag) "PagerDutyChangeEventsResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyChangeEventsResponse = { change_events: PagerDutyChangeEvent[]; }; -// Warning: (ae-missing-release-tag) "PagerDutyClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class PagerDutyClient implements PagerDutyApi { constructor(config: PagerDutyClientApiConfig); @@ -100,23 +96,17 @@ export class PagerDutyClient implements PagerDutyApi { triggerAlarm(request: PagerDutyTriggerAlarmRequest): Promise; } -// Warning: (ae-missing-release-tag) "PagerDutyClientApiConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyClientApiConfig = PagerDutyClientApiDependencies & { eventsBaseUrl?: string; }; -// Warning: (ae-missing-release-tag) "PagerDutyClientApiDependencies" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyClientApiDependencies = { discoveryApi: DiscoveryApi; fetchApi: FetchApi; }; -// Warning: (ae-missing-release-tag) "PagerDutyEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyEntity = { integrationKey?: string; @@ -124,8 +114,6 @@ export type PagerDutyEntity = { name: string; }; -// Warning: (ae-missing-release-tag) "PagerDutyIncident" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyIncident = { id: string; @@ -141,37 +129,27 @@ export type PagerDutyIncident = { created_at: string; }; -// Warning: (ae-missing-release-tag) "PagerDutyIncidentsResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyIncidentsResponse = { incidents: PagerDutyIncident[]; }; -// Warning: (ae-missing-release-tag) "PagerDutyOnCall" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyOnCall = { user: PagerDutyUser; escalation_level: number; }; -// Warning: (ae-missing-release-tag) "PagerDutyOnCallsResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyOnCallsResponse = { oncalls: PagerDutyOnCall[]; }; -// Warning: (ae-missing-release-tag) "pagerDutyPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const pagerDutyPlugin: BackstagePlugin<{}, {}, {}>; export { pagerDutyPlugin }; export { pagerDutyPlugin as plugin }; -// Warning: (ae-missing-release-tag) "PagerDutyService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyService = { id: string; @@ -185,15 +163,11 @@ export type PagerDutyService = { }; }; -// Warning: (ae-missing-release-tag) "PagerDutyServiceResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyServiceResponse = { service: PagerDutyService; }; -// Warning: (ae-missing-release-tag) "PagerDutyTriggerAlarmRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyTriggerAlarmRequest = { integrationKey: string; @@ -202,8 +176,6 @@ export type PagerDutyTriggerAlarmRequest = { userName: string; }; -// Warning: (ae-missing-release-tag) "PagerDutyUser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type PagerDutyUser = { id: string; @@ -213,14 +185,9 @@ export type PagerDutyUser = { name: string; }; -// Warning: (ae-forgotten-export) The symbol "TriggerButtonProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "TriggerButton" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export function TriggerButton(props: TriggerButtonProps): JSX.Element; +export function TriggerButton(props: { children?: ReactNode }): JSX.Element; -// Warning: (ae-missing-release-tag) "UnauthorizedError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class UnauthorizedError extends Error {} ``` diff --git a/plugins/pagerduty/src/api/client.ts b/plugins/pagerduty/src/api/client.ts index edc87d4b4a..7266d5e9eb 100644 --- a/plugins/pagerduty/src/api/client.ts +++ b/plugins/pagerduty/src/api/client.ts @@ -31,8 +31,10 @@ import { NotFoundError } from '@backstage/errors'; import { Entity } from '@backstage/catalog-model'; import { getPagerDutyEntity } from '../components/pagerDutyEntity'; +/** @public */ export class UnauthorizedError extends Error {} +/** @public */ export const pagerDutyApiRef = createApiRef({ id: 'plugin.pagerduty.api', }); @@ -40,6 +42,7 @@ export const pagerDutyApiRef = createApiRef({ const commonGetServiceParams = 'time_zone=UTC&include[]=integrations&include[]=escalation_policies'; +/** @public */ export class PagerDutyClient implements PagerDutyApi { static fromConfig( configApi: ConfigApi, diff --git a/plugins/pagerduty/src/api/index.ts b/plugins/pagerduty/src/api/index.ts index 9a0c08973d..031920fa62 100644 --- a/plugins/pagerduty/src/api/index.ts +++ b/plugins/pagerduty/src/api/index.ts @@ -16,6 +16,7 @@ export { PagerDutyClient, pagerDutyApiRef, UnauthorizedError } from './client'; export type { + PagerDutyApi, PagerDutyServiceResponse, PagerDutyIncidentsResponse, PagerDutyChangeEventsResponse, diff --git a/plugins/pagerduty/src/api/types.ts b/plugins/pagerduty/src/api/types.ts index 786b0bdffd..f1971d53d5 100644 --- a/plugins/pagerduty/src/api/types.ts +++ b/plugins/pagerduty/src/api/types.ts @@ -27,22 +27,27 @@ export type PagerDutyServicesResponse = { services: PagerDutyService[]; }; +/** @public */ export type PagerDutyServiceResponse = { service: PagerDutyService; }; +/** @public */ export type PagerDutyIncidentsResponse = { incidents: PagerDutyIncident[]; }; +/** @public */ export type PagerDutyChangeEventsResponse = { change_events: PagerDutyChangeEvent[]; }; +/** @public */ export type PagerDutyOnCallsResponse = { oncalls: PagerDutyOnCall[]; }; +/** @public */ export type PagerDutyTriggerAlarmRequest = { integrationKey: string; source: string; @@ -50,6 +55,7 @@ export type PagerDutyTriggerAlarmRequest = { userName: string; }; +/** @public */ export interface PagerDutyApi { /** * Fetches the service for the provided Entity. @@ -85,11 +91,13 @@ export interface PagerDutyApi { triggerAlarm(request: PagerDutyTriggerAlarmRequest): Promise; } +/** @public */ export type PagerDutyClientApiDependencies = { discoveryApi: DiscoveryApi; fetchApi: FetchApi; }; +/** @public */ export type PagerDutyClientApiConfig = PagerDutyClientApiDependencies & { eventsBaseUrl?: string; }; diff --git a/plugins/pagerduty/src/components/PagerDutyCard/index.tsx b/plugins/pagerduty/src/components/PagerDutyCard/index.tsx index e8ba2c522c..15967fae01 100644 --- a/plugins/pagerduty/src/components/PagerDutyCard/index.tsx +++ b/plugins/pagerduty/src/components/PagerDutyCard/index.tsx @@ -46,12 +46,14 @@ const BasicCard = ({ children }: { children: ReactNode }) => ( {children} ); +/** @public */ export const isPluginApplicableToEntity = (entity: Entity) => Boolean( entity.metadata.annotations?.[PAGERDUTY_INTEGRATION_KEY] || entity.metadata.annotations?.[PAGERDUTY_SERVICE_ID], ); +/** @public */ export const PagerDutyCard = () => { const { entity } = useEntity(); const pagerDutyEntity = getPagerDutyEntity(entity); diff --git a/plugins/pagerduty/src/components/TriggerButton/index.tsx b/plugins/pagerduty/src/components/TriggerButton/index.tsx index 6f83effcf4..732298c6d8 100644 --- a/plugins/pagerduty/src/components/TriggerButton/index.tsx +++ b/plugins/pagerduty/src/components/TriggerButton/index.tsx @@ -20,10 +20,6 @@ import { BackstageTheme } from '@backstage/theme'; import { usePagerdutyEntity } from '../../hooks'; import { TriggerDialog } from '../TriggerDialog'; -export type TriggerButtonProps = { - children?: ReactNode; -}; - const useStyles = makeStyles(theme => ({ buttonStyle: { backgroundColor: theme.palette.error.main, @@ -34,7 +30,8 @@ const useStyles = makeStyles(theme => ({ }, })); -export function TriggerButton(props: TriggerButtonProps) { +/** @public */ +export function TriggerButton(props: { children?: ReactNode }) { const { buttonStyle } = useStyles(); const { integrationKey } = usePagerdutyEntity(); const [dialogShown, setDialogShown] = useState(false); diff --git a/plugins/pagerduty/src/components/types.ts b/plugins/pagerduty/src/components/types.ts index 89cdffea16..156b5c9b9d 100644 --- a/plugins/pagerduty/src/components/types.ts +++ b/plugins/pagerduty/src/components/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export type PagerDutyChangeEvent = { id: string; integration: [ @@ -33,6 +34,7 @@ export type PagerDutyChangeEvent = { timestamp: string; }; +/** @public */ export type PagerDutyIncident = { id: string; title: string; @@ -47,6 +49,7 @@ export type PagerDutyIncident = { created_at: string; }; +/** @public */ export type PagerDutyService = { id: string; name: string; @@ -59,17 +62,20 @@ export type PagerDutyService = { }; }; +/** @public */ export type PagerDutyOnCall = { user: PagerDutyUser; escalation_level: number; }; +/** @public */ export type PagerDutyAssignee = { id: string; summary: string; html_url: string; }; +/** @public */ export type PagerDutyUser = { id: string; summary: string; @@ -78,6 +84,7 @@ export type PagerDutyUser = { name: string; }; +/** @public */ export type SubHeaderLink = { title: string; href?: string; diff --git a/plugins/pagerduty/src/plugin.ts b/plugins/pagerduty/src/plugin.ts index d49de29416..73e7e0b397 100644 --- a/plugins/pagerduty/src/plugin.ts +++ b/plugins/pagerduty/src/plugin.ts @@ -28,6 +28,7 @@ export const rootRouteRef = createRouteRef({ id: 'pagerduty', }); +/** @public */ export const pagerDutyPlugin = createPlugin({ id: 'pagerduty', apis: [ @@ -44,6 +45,7 @@ export const pagerDutyPlugin = createPlugin({ ], }); +/** @public */ export const EntityPagerDutyCard = pagerDutyPlugin.provide( createComponentExtension({ name: 'EntityPagerDutyCard', diff --git a/plugins/pagerduty/src/types.ts b/plugins/pagerduty/src/types.ts index 07f7f2bbe3..9f38b429ef 100644 --- a/plugins/pagerduty/src/types.ts +++ b/plugins/pagerduty/src/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export type PagerDutyEntity = { integrationKey?: string; serviceId?: string; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index fd1254b07d..fbd5b71196 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -229,7 +229,6 @@ const ALLOW_WARNINGS = [ 'plugins/kubernetes-common', 'plugins/newrelic', 'plugins/newrelic-dashboard', - 'plugins/pagerduty', ]; async function resolvePackagePath( From 93b552b34cf709ce1d84250657917c385653c790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:12:39 +0200 Subject: [PATCH 151/275] gcp-projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/gcp-projects/api-report.md | 18 ------------------ plugins/gcp-projects/src/api/GcpApi.ts | 2 ++ plugins/gcp-projects/src/api/GcpClient.ts | 1 + plugins/gcp-projects/src/api/types.ts | 4 ++++ plugins/gcp-projects/src/plugin.ts | 2 ++ scripts/api-extractor.ts | 1 - 6 files changed, 9 insertions(+), 19 deletions(-) diff --git a/plugins/gcp-projects/api-report.md b/plugins/gcp-projects/api-report.md index 46c8dd2c2f..5b7604c935 100644 --- a/plugins/gcp-projects/api-report.md +++ b/plugins/gcp-projects/api-report.md @@ -10,8 +10,6 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { OAuthApi } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "GcpApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GcpApi = { listProjects(): Promise; @@ -22,13 +20,9 @@ export type GcpApi = { }): Promise; }; -// Warning: (ae-missing-release-tag) "gcpApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const gcpApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "GcpClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class GcpClient implements GcpApi { constructor(googleAuthApi: OAuthApi); @@ -45,13 +39,9 @@ export class GcpClient implements GcpApi { listProjects(): Promise; } -// Warning: (ae-missing-release-tag) "GcpProjectsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const GcpProjectsPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "gcpProjectsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const gcpProjectsPlugin: BackstagePlugin< { @@ -63,8 +53,6 @@ const gcpProjectsPlugin: BackstagePlugin< export { gcpProjectsPlugin }; export { gcpProjectsPlugin as plugin }; -// Warning: (ae-missing-release-tag) "Operation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Operation = { name: string; @@ -74,8 +62,6 @@ export type Operation = { response: string; }; -// Warning: (ae-missing-release-tag) "Project" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Project = { name: string; @@ -85,15 +71,11 @@ export type Project = { createTime?: string; }; -// Warning: (ae-missing-release-tag) "ProjectDetails" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type ProjectDetails = { details: string; }; -// Warning: (ae-missing-release-tag) "Status" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Status = { code: number; diff --git a/plugins/gcp-projects/src/api/GcpApi.ts b/plugins/gcp-projects/src/api/GcpApi.ts index 9167d2983f..434da5fd28 100644 --- a/plugins/gcp-projects/src/api/GcpApi.ts +++ b/plugins/gcp-projects/src/api/GcpApi.ts @@ -17,10 +17,12 @@ import { Project, Operation } from './types'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const gcpApiRef = createApiRef({ id: 'plugin.gcpprojects.service', }); +/** @public */ export type GcpApi = { listProjects(): Promise; getProject(projectId: string): Promise; diff --git a/plugins/gcp-projects/src/api/GcpClient.ts b/plugins/gcp-projects/src/api/GcpClient.ts index f226e3b20c..10dcb5a4c8 100644 --- a/plugins/gcp-projects/src/api/GcpClient.ts +++ b/plugins/gcp-projects/src/api/GcpClient.ts @@ -21,6 +21,7 @@ import { OAuthApi } from '@backstage/core-plugin-api'; const BASE_URL = 'https://content-cloudresourcemanager.googleapis.com/v1/projects'; +/** @public */ export class GcpClient implements GcpApi { constructor(private readonly googleAuthApi: OAuthApi) {} diff --git a/plugins/gcp-projects/src/api/types.ts b/plugins/gcp-projects/src/api/types.ts index 6b70c627d2..8e3dd39519 100644 --- a/plugins/gcp-projects/src/api/types.ts +++ b/plugins/gcp-projects/src/api/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export type Project = { name: string; projectNumber?: string; @@ -22,10 +23,12 @@ export type Project = { createTime?: string; }; +/** @public */ export type ProjectDetails = { details: string; }; +/** @public */ export type Operation = { name: string; metadata: string; @@ -34,6 +37,7 @@ export type Operation = { response: string; }; +/** @public */ export type Status = { code: number; message: string; diff --git a/plugins/gcp-projects/src/plugin.ts b/plugins/gcp-projects/src/plugin.ts index 080d051ee3..fede29e3b5 100644 --- a/plugins/gcp-projects/src/plugin.ts +++ b/plugins/gcp-projects/src/plugin.ts @@ -23,6 +23,7 @@ import { googleAuthApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const gcpProjectsPlugin = createPlugin({ id: 'gcp-projects', routes: { @@ -39,6 +40,7 @@ export const gcpProjectsPlugin = createPlugin({ ], }); +/** @public */ export const GcpProjectsPage = gcpProjectsPlugin.provide( createRoutableExtension({ name: 'GcpProjectsPage', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index fbd5b71196..7e79e14ade 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -215,7 +215,6 @@ const ALLOW_WARNINGS = [ 'plugins/explore', 'plugins/explore-react', 'plugins/firehydrant', - 'plugins/gcp-projects', 'plugins/git-release-manager', 'plugins/github-actions', 'plugins/github-deployments', From 71ce2d1c62d3440de19e86a94242576cd6f37f1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:16:21 +0200 Subject: [PATCH 152/275] cloudbuild MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/cloudbuild/api-report.md | 52 ------------------- plugins/cloudbuild/src/api/CloudbuildApi.ts | 1 + plugins/cloudbuild/src/api/types.ts | 16 ++++++ .../cloudbuild/src/components/Cards/Cards.tsx | 3 ++ .../cloudbuild/src/components/Cards/index.ts | 1 + plugins/cloudbuild/src/components/Router.tsx | 2 + .../src/components/useProjectName.ts | 1 + plugins/cloudbuild/src/plugin.ts | 4 ++ plugins/firehydrant/api-report.md | 4 -- plugins/firehydrant/src/plugin.ts | 2 + scripts/api-extractor.ts | 2 - 11 files changed, 30 insertions(+), 58 deletions(-) diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index 34b50b54d8..deacf96acd 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -11,8 +11,6 @@ import { Entity } from '@backstage/catalog-model'; import { OAuthApi } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "ActionsGetWorkflowResponseData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type ActionsGetWorkflowResponseData = { id: string; @@ -37,16 +35,12 @@ export type ActionsGetWorkflowResponseData = { timing: Timing2; }; -// Warning: (ae-missing-release-tag) "ActionsListWorkflowRunsForRepoResponseData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ActionsListWorkflowRunsForRepoResponseData { // (undocumented) builds: ActionsGetWorkflowResponseData[]; } -// Warning: (ae-missing-release-tag) "BUILD" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface BUILD { // (undocumented) @@ -55,8 +49,6 @@ export interface BUILD { startTime: string; } -// Warning: (ae-missing-release-tag) "CLOUDBUILD_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CLOUDBUILD_ANNOTATION = 'google.com/cloudbuild-project-slug'; @@ -79,8 +71,6 @@ export type CloudbuildApi = { }) => Promise; }; -// Warning: (ae-missing-release-tag) "cloudbuildApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const cloudbuildApiRef: ApiRef; @@ -107,8 +97,6 @@ export class CloudbuildClient implements CloudbuildApi { reRunWorkflow(options: { projectId: string; runId: string }): Promise; } -// Warning: (ae-missing-release-tag) "cloudbuildPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const cloudbuildPlugin: BackstagePlugin< { @@ -120,27 +108,19 @@ const cloudbuildPlugin: BackstagePlugin< export { cloudbuildPlugin }; export { cloudbuildPlugin as plugin }; -// Warning: (ae-missing-release-tag) "EntityCloudbuildContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityCloudbuildContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLatestCloudbuildRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityLatestCloudbuildRunCard: (props: { branch: string; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityLatestCloudbuildsForBranchCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityLatestCloudbuildsForBranchCard: (props: { branch: string; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "FETCHSOURCE" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface FETCHSOURCE { // (undocumented) @@ -149,27 +129,19 @@ export interface FETCHSOURCE { startTime: string; } -// Warning: (ae-missing-release-tag) "isCloudbuildAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isCloudbuildAvailable: (entity: Entity) => boolean; export { isCloudbuildAvailable }; export { isCloudbuildAvailable as isPluginApplicableToEntity }; -// Warning: (ae-missing-release-tag) "LatestWorkflowRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const LatestWorkflowRunCard: (props: { branch: string }) => JSX.Element; -// Warning: (ae-missing-release-tag) "LatestWorkflowsForBranchCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const LatestWorkflowsForBranchCard: (props: { branch: string; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "Options" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Options { // (undocumented) @@ -182,8 +154,6 @@ export interface Options { substitutionOption: string; } -// Warning: (ae-missing-release-tag) "PullTiming" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface PullTiming { // (undocumented) @@ -192,8 +162,6 @@ export interface PullTiming { startTime: string; } -// Warning: (ae-missing-release-tag) "ResolvedStorageSource" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ResolvedStorageSource { // (undocumented) @@ -204,8 +172,6 @@ export interface ResolvedStorageSource { object: string; } -// Warning: (ae-missing-release-tag) "Results" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Results { // (undocumented) @@ -214,21 +180,15 @@ export interface Results { buildStepOutputs: string[]; } -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const Router: () => JSX.Element; -// Warning: (ae-missing-release-tag) "Source" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Source { // (undocumented) storageSource: StorageSource; } -// Warning: (ae-missing-release-tag) "SourceProvenance" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface SourceProvenance { // (undocumented) @@ -237,8 +197,6 @@ export interface SourceProvenance { resolvedStorageSource: {}; } -// Warning: (ae-missing-release-tag) "Step" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Step { // (undocumented) @@ -263,8 +221,6 @@ export interface Step { waitFor: string[]; } -// Warning: (ae-missing-release-tag) "StorageSource" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface StorageSource { // (undocumented) @@ -273,8 +229,6 @@ export interface StorageSource { object: string; } -// Warning: (ae-missing-release-tag) "Substitutions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Substitutions { // (undocumented) @@ -289,8 +243,6 @@ export interface Substitutions { SHORT_SHA: string; } -// Warning: (ae-missing-release-tag) "Timing" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Timing { // (undocumented) @@ -299,8 +251,6 @@ export interface Timing { startTime: string; } -// Warning: (ae-missing-release-tag) "Timing2" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Timing2 { // (undocumented) @@ -309,8 +259,6 @@ export interface Timing2 { FETCHSOURCE: FETCHSOURCE; } -// Warning: (ae-missing-release-tag) "Volume" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Volume { // (undocumented) diff --git a/plugins/cloudbuild/src/api/CloudbuildApi.ts b/plugins/cloudbuild/src/api/CloudbuildApi.ts index eeaf269cde..cb29b49fbf 100644 --- a/plugins/cloudbuild/src/api/CloudbuildApi.ts +++ b/plugins/cloudbuild/src/api/CloudbuildApi.ts @@ -20,6 +20,7 @@ import { } from '../api/types'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const cloudbuildApiRef = createApiRef({ id: 'plugin.cloudbuild.service', }); diff --git a/plugins/cloudbuild/src/api/types.ts b/plugins/cloudbuild/src/api/types.ts index c9f6481b9e..1dd03265bc 100644 --- a/plugins/cloudbuild/src/api/types.ts +++ b/plugins/cloudbuild/src/api/types.ts @@ -14,10 +14,12 @@ * limitations under the License. */ +/** @public */ export interface ActionsListWorkflowRunsForRepoResponseData { builds: ActionsGetWorkflowResponseData[]; } +/** @public */ export type ActionsGetWorkflowResponseData = { id: string; status: string; @@ -41,6 +43,7 @@ export type ActionsGetWorkflowResponseData = { timing: Timing2; }; +/** @public */ export interface Step { name: string; args: string[]; @@ -54,16 +57,19 @@ export interface Step { pullTiming: PullTiming; } +/** @public */ export interface Timing2 { BUILD: BUILD; FETCHSOURCE: FETCHSOURCE; } +/** @public */ export interface SourceProvenance { resolvedStorageSource: {}; fileHashes: {}; } +/** @public */ export interface Options { machineType: string; substitutionOption: string; @@ -71,6 +77,7 @@ export interface Options { dynamicSubstitutions: boolean; } +/** @public */ export interface Substitutions { COMMIT_SHA: string; SHORT_SHA: string; @@ -79,45 +86,54 @@ export interface Substitutions { REVISION_ID: string; } +/** @public */ export interface Results { buildStepImages: string[]; buildStepOutputs: string[]; } +/** @public */ export interface BUILD { startTime: string; endTime: string; } +/** @public */ export interface FETCHSOURCE { startTime: string; endTime: string; } +/** @public */ export interface StorageSource { bucket: string; object: string; } +/** @public */ export interface Source { storageSource: StorageSource; } +/** @public */ export interface Volume { name: string; path: string; } +/** @public */ export interface Timing { startTime: string; endTime: string; } +/** @public */ export interface PullTiming { startTime: string; endTime: string; } +/** @public */ export interface ResolvedStorageSource { bucket: string; object: string; diff --git a/plugins/cloudbuild/src/components/Cards/Cards.tsx b/plugins/cloudbuild/src/components/Cards/Cards.tsx index 75c9ee432b..2b7a8607b7 100644 --- a/plugins/cloudbuild/src/components/Cards/Cards.tsx +++ b/plugins/cloudbuild/src/components/Cards/Cards.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import React, { useEffect } from 'react'; import { useWorkflowRuns, WorkflowRun } from '../useWorkflowRuns'; import { WorkflowRunsTable } from '../WorkflowRunsTable'; @@ -72,6 +73,7 @@ const WidgetContent = ({ ); }; +/** @public */ export const LatestWorkflowRunCard = (props: { branch: string }) => { const { branch = 'master' } = props; const { entity } = useEntity(); @@ -100,6 +102,7 @@ export const LatestWorkflowRunCard = (props: { branch: string }) => { ); }; +/** @public */ export const LatestWorkflowsForBranchCard = (props: { branch: string }) => { const { branch = 'master' } = props; const { entity } = useEntity(); diff --git a/plugins/cloudbuild/src/components/Cards/index.ts b/plugins/cloudbuild/src/components/Cards/index.ts index 669f723c2d..7149bdf3ca 100644 --- a/plugins/cloudbuild/src/components/Cards/index.ts +++ b/plugins/cloudbuild/src/components/Cards/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { LatestWorkflowRunCard, LatestWorkflowsForBranchCard } from './Cards'; diff --git a/plugins/cloudbuild/src/components/Router.tsx b/plugins/cloudbuild/src/components/Router.tsx index e4c590bcaf..6ac025fef1 100644 --- a/plugins/cloudbuild/src/components/Router.tsx +++ b/plugins/cloudbuild/src/components/Router.tsx @@ -23,9 +23,11 @@ import { WorkflowRunsTable } from './WorkflowRunsTable'; import { CLOUDBUILD_ANNOTATION } from './useProjectName'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; +/** @public */ export const isCloudbuildAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[CLOUDBUILD_ANNOTATION]); +/** @public */ export const Router = () => { const { entity } = useEntity(); diff --git a/plugins/cloudbuild/src/components/useProjectName.ts b/plugins/cloudbuild/src/components/useProjectName.ts index 3f314aaa47..ae6ae07b56 100644 --- a/plugins/cloudbuild/src/components/useProjectName.ts +++ b/plugins/cloudbuild/src/components/useProjectName.ts @@ -17,6 +17,7 @@ import useAsync from 'react-use/lib/useAsync'; import { Entity } from '@backstage/catalog-model'; +/** @public */ export const CLOUDBUILD_ANNOTATION = 'google.com/cloudbuild-project-slug'; export const useProjectName = (entity: Entity) => { diff --git a/plugins/cloudbuild/src/plugin.ts b/plugins/cloudbuild/src/plugin.ts index fc96d154b7..2933bfb0be 100644 --- a/plugins/cloudbuild/src/plugin.ts +++ b/plugins/cloudbuild/src/plugin.ts @@ -23,6 +23,7 @@ import { createComponentExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const cloudbuildPlugin = createPlugin({ id: 'cloudbuild', apis: [ @@ -39,6 +40,7 @@ export const cloudbuildPlugin = createPlugin({ }, }); +/** @public */ export const EntityCloudbuildContent = cloudbuildPlugin.provide( createRoutableExtension({ name: 'EntityCloudbuildContent', @@ -47,6 +49,7 @@ export const EntityCloudbuildContent = cloudbuildPlugin.provide( }), ); +/** @public */ export const EntityLatestCloudbuildRunCard = cloudbuildPlugin.provide( createComponentExtension({ name: 'EntityLatestCloudbuildRunCard', @@ -57,6 +60,7 @@ export const EntityLatestCloudbuildRunCard = cloudbuildPlugin.provide( }), ); +/** @public */ export const EntityLatestCloudbuildsForBranchCard = cloudbuildPlugin.provide( createComponentExtension({ name: 'EntityLatestCloudbuildsForBranchCard', diff --git a/plugins/firehydrant/api-report.md b/plugins/firehydrant/api-report.md index c12048e81f..2e3bcf6385 100644 --- a/plugins/firehydrant/api-report.md +++ b/plugins/firehydrant/api-report.md @@ -8,13 +8,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "FirehydrantCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const FirehydrantCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "firehydrantPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const firehydrantPlugin: BackstagePlugin< { diff --git a/plugins/firehydrant/src/plugin.ts b/plugins/firehydrant/src/plugin.ts index df21ee7f9c..6deefe4fce 100644 --- a/plugins/firehydrant/src/plugin.ts +++ b/plugins/firehydrant/src/plugin.ts @@ -23,6 +23,7 @@ import { import { rootRouteRef } from './routes'; +/** @public */ export const firehydrantPlugin = createPlugin({ id: 'firehydrant', apis: [ @@ -37,6 +38,7 @@ export const firehydrantPlugin = createPlugin({ }, }); +/** @public */ export const FirehydrantCard = firehydrantPlugin.provide( createComponentExtension({ name: 'FirehydrantCard', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 7e79e14ade..5718f7a458 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -208,13 +208,11 @@ const ALLOW_WARNINGS = [ 'plugins/catalog-import', 'plugins/cicd-statistics', 'plugins/circleci', - 'plugins/cloudbuild', 'plugins/config-schema', 'plugins/cost-insights', 'plugins/dynatrace', 'plugins/explore', 'plugins/explore-react', - 'plugins/firehydrant', 'plugins/git-release-manager', 'plugins/github-actions', 'plugins/github-deployments', From c16fcd21dec89128b0ab4e7a77c12118944eb79c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:17:56 +0200 Subject: [PATCH 153/275] config-schema MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/config-schema/api-report.md | 16 ++++++---------- plugins/config-schema/src/api/index.ts | 2 +- plugins/config-schema/src/api/types.ts | 3 +++ plugins/config-schema/src/plugin.ts | 2 ++ scripts/api-extractor.ts | 1 - 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/plugins/config-schema/api-report.md b/plugins/config-schema/api-report.md index 4b9f47c950..7d110c34d4 100644 --- a/plugins/config-schema/api-report.md +++ b/plugins/config-schema/api-report.md @@ -11,28 +11,18 @@ import { Observable } from '@backstage/types'; import { RouteRef } from '@backstage/core-plugin-api'; import { Schema } from 'jsonschema'; -// Warning: (ae-missing-release-tag) "ConfigSchemaApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ConfigSchemaApi { - // Warning: (ae-forgotten-export) The symbol "ConfigSchemaResult" needs to be exported by the entry point index.d.ts - // // (undocumented) schema$(): Observable; } -// Warning: (ae-missing-release-tag) "configSchemaApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const configSchemaApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "ConfigSchemaPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ConfigSchemaPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "configSchemaPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const configSchemaPlugin: BackstagePlugin< { @@ -42,6 +32,12 @@ export const configSchemaPlugin: BackstagePlugin< {} >; +// @public (undocumented) +export interface ConfigSchemaResult { + // (undocumented) + schema?: Schema; +} + // @public export class StaticSchemaLoader implements ConfigSchemaApi { constructor(options?: { url?: string }); diff --git a/plugins/config-schema/src/api/index.ts b/plugins/config-schema/src/api/index.ts index 8c1532ed0c..18319a2fe7 100644 --- a/plugins/config-schema/src/api/index.ts +++ b/plugins/config-schema/src/api/index.ts @@ -15,5 +15,5 @@ */ export { configSchemaApiRef } from './types'; -export type { ConfigSchemaApi } from './types'; +export type { ConfigSchemaApi, ConfigSchemaResult } from './types'; export { StaticSchemaLoader } from './StaticSchemaLoader'; diff --git a/plugins/config-schema/src/api/types.ts b/plugins/config-schema/src/api/types.ts index 13cd4f602b..b0c43495cf 100644 --- a/plugins/config-schema/src/api/types.ts +++ b/plugins/config-schema/src/api/types.ts @@ -18,14 +18,17 @@ import { Schema } from 'jsonschema'; import { createApiRef } from '@backstage/core-plugin-api'; import { Observable } from '@backstage/types'; +/** @public */ export interface ConfigSchemaResult { schema?: Schema; } +/** @public */ export interface ConfigSchemaApi { schema$(): Observable; } +/** @public */ export const configSchemaApiRef = createApiRef({ id: 'plugin.config-schema', }); diff --git a/plugins/config-schema/src/plugin.ts b/plugins/config-schema/src/plugin.ts index 91d7daa871..a0ad45f18c 100644 --- a/plugins/config-schema/src/plugin.ts +++ b/plugins/config-schema/src/plugin.ts @@ -20,6 +20,7 @@ import { createRoutableExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const configSchemaPlugin = createPlugin({ id: 'config-schema', routes: { @@ -27,6 +28,7 @@ export const configSchemaPlugin = createPlugin({ }, }); +/** @public */ export const ConfigSchemaPage = configSchemaPlugin.provide( createRoutableExtension({ name: 'ConfigSchemaPage', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 5718f7a458..b4fc287c03 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -208,7 +208,6 @@ const ALLOW_WARNINGS = [ 'plugins/catalog-import', 'plugins/cicd-statistics', 'plugins/circleci', - 'plugins/config-schema', 'plugins/cost-insights', 'plugins/dynatrace', 'plugins/explore', From d8e317e6612624043896f284c50b9c2269672978 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 13:23:16 +0200 Subject: [PATCH 154/275] chore: working out the review step a little more Signed-off-by: blam --- .../Stepper/ReviewState.test.tsx | 7 ++++++- .../TemplateWizardPage/Stepper/Stepper.test.tsx | 14 +++++++------- .../next/TemplateWizardPage/Stepper/Stepper.tsx | 3 +-- .../Stepper/useTemplateSchema.ts | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx index b77d0d0c59..d603213c19 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx @@ -16,6 +16,7 @@ import React from 'react'; import { ReviewState } from './ReviewState'; import { render } from '@testing-library/react'; +import { ParsedTemplateSchema } from './useTemplateSchema'; describe('ReviewState', () => { it('should render the text as normal with no options', () => { @@ -38,7 +39,7 @@ describe('ReviewState', () => { test: 'bob', }; - const schemas = [ + const schemas: ParsedTemplateSchema[] = [ { mergedSchema: { type: 'object', @@ -49,6 +50,10 @@ describe('ReviewState', () => { }, }, }, + schema: {}, + title: 'test', + uiSchema: {}, + description: 'asd', }, ]; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx index 90901f22c5..f605e9c114 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.test.tsx @@ -47,17 +47,17 @@ describe('Stepper', () => { title: 'React JSON Schema Form Test', }; - const { getByText } = await renderInTestApp( + const { getByRole } = await renderInTestApp( , ); - expect(getByText('Next')).toBeInTheDocument(); + expect(getByRole('button', { name: 'Next' })).toBeInTheDocument(); await act(async () => { - await fireEvent.click(getByText('Next')); + await fireEvent.click(getByRole('button', { name: 'Next' })); }); - expect(getByText('Review')).toBeInTheDocument(); + expect(getByRole('button', { name: 'Review' })).toBeInTheDocument(); }); it('should remember the state of the form when cycling through the pages', async () => { @@ -87,7 +87,7 @@ describe('Stepper', () => { title: 'React JSON Schema Form Test', }; - const { getByRole, getByText } = await renderInTestApp( + const { getByRole } = await renderInTestApp( , ); @@ -96,11 +96,11 @@ describe('Stepper', () => { }); await act(async () => { - await fireEvent.click(getByText('Next')); + await fireEvent.click(getByRole('button', { name: 'Next' })); }); await act(async () => { - await fireEvent.click(getByText('Back')); + await fireEvent.click(getByRole('button', { name: 'Back' })); }); expect(getByRole('textbox', { name: 'name' })).toHaveValue( diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index 80926e5909..be4a300755 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -75,8 +75,7 @@ export const Stepper = (props: StepperProps) => { }, [props.extensions]); const validation = useMemo(() => { - const { mergedSchema } = steps[activeStep] ?? {}; - return createAsyncValidators(mergedSchema, validators, { + return createAsyncValidators(steps[activeStep].mergedSchema, validators, { apiHolder, }); }, [steps, activeStep, validators, apiHolder]); diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts index dc23a8a49c..d0d8590a7b 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/useTemplateSchema.ts @@ -28,7 +28,7 @@ export interface ParsedTemplateSchema { } export const useTemplateSchema = ( manifest: TemplateParameterSchema, -): { steps: ParsedTemplateSchema } => { +): { steps: ParsedTemplateSchema[] } => { const featureFlags = useApi(featureFlagsApiRef); const steps = manifest.steps.map(({ title, description, schema }) => ({ title, From 08c87dd8546ad5f98dc08dfebfd2f48b494364ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:24:22 +0200 Subject: [PATCH 155/275] explore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/explore/api-report.md | 48 +++++++++---------- .../src/components/DomainCard/DomainCard.tsx | 9 ++-- .../src/components/DomainCard/index.ts | 1 + .../ExploreLayout/ExploreLayout.tsx | 17 +++---- .../src/components/ExploreLayout/index.ts | 1 + plugins/explore/src/components/index.ts | 4 +- plugins/explore/src/extensions.tsx | 4 ++ plugins/explore/src/plugin.ts | 1 + plugins/explore/src/routes.ts | 2 + scripts/api-extractor.ts | 1 - 10 files changed, 46 insertions(+), 42 deletions(-) diff --git a/plugins/explore/api-report.md b/plugins/explore/api-report.md index f4c7345b6c..9653c0fb63 100644 --- a/plugins/explore/api-report.md +++ b/plugins/explore/api-report.md @@ -12,8 +12,6 @@ import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; import { TabProps } from '@material-ui/core'; -// Warning: (ae-missing-release-tag) "catalogEntityRouteRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export const catalogEntityRouteRef: ExternalRouteRef< { @@ -24,34 +22,30 @@ export const catalogEntityRouteRef: ExternalRouteRef< true >; -// Warning: (ae-forgotten-export) The symbol "DomainCardProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "DomainCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const DomainCard: ({ entity }: DomainCardProps) => JSX.Element; +export const DomainCard: (props: { entity: DomainEntity }) => JSX.Element; -// Warning: (ae-missing-release-tag) "DomainExplorerContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const DomainExplorerContent: (props: { title?: string | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "ExploreLayout" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export const ExploreLayout: { - ({ title, subtitle, children }: ExploreLayoutProps): JSX.Element; + (props: ExploreLayoutProps): JSX.Element; Route: (props: SubRoute) => null; }; -// Warning: (ae-missing-release-tag) "ExplorePage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type ExploreLayoutProps = { + title?: string; + subtitle?: string; + children?: default_2.ReactNode; +}; + // @public (undocumented) export const ExplorePage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "explorePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const explorePlugin: BackstagePlugin< { @@ -72,27 +66,29 @@ const explorePlugin: BackstagePlugin< export { explorePlugin }; export { explorePlugin as plugin }; -// Warning: (ae-missing-release-tag) "exploreRouteRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const exploreRouteRef: RouteRef; -// Warning: (ae-missing-release-tag) "GroupsExplorerContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const GroupsExplorerContent: (props: { title?: string | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "ToolExplorerContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type SubRoute = { + path: string; + title: string; + children: JSX.Element; + tabProps?: TabProps< + default_2.ElementType, + { + component?: default_2.ElementType; + } + >; +}; + // @public (undocumented) export const ToolExplorerContent: (props: { title?: string | undefined; }) => JSX.Element; - -// Warnings were encountered during analysis: -// -// src/components/ExploreLayout/ExploreLayout.d.ts:29:5 - (ae-forgotten-export) The symbol "ExploreLayoutProps" needs to be exported by the entry point index.d.ts -// src/components/ExploreLayout/ExploreLayout.d.ts:30:5 - (ae-forgotten-export) The symbol "SubRoute" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/explore/src/components/DomainCard/DomainCard.tsx b/plugins/explore/src/components/DomainCard/DomainCard.tsx index 94e4f145c3..a20a5e1f0c 100644 --- a/plugins/explore/src/components/DomainCard/DomainCard.tsx +++ b/plugins/explore/src/components/DomainCard/DomainCard.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { DomainEntity, RELATION_OWNED_BY } from '@backstage/catalog-model'; import { EntityRefLinks, @@ -33,13 +34,11 @@ import React from 'react'; import { Button, ItemCardHeader } from '@backstage/core-components'; import { useRouteRef } from '@backstage/core-plugin-api'; -type DomainCardProps = { - entity: DomainEntity; -}; +/** @public */ +export const DomainCard = (props: { entity: DomainEntity }) => { + const { entity } = props; -export const DomainCard = ({ entity }: DomainCardProps) => { const catalogEntityRoute = useRouteRef(entityRouteRef); - const ownedByRelations = getEntityRelations(entity, RELATION_OWNED_BY); const url = catalogEntityRoute(entityRouteParams(entity)); diff --git a/plugins/explore/src/components/DomainCard/index.ts b/plugins/explore/src/components/DomainCard/index.ts index 5d62a09e89..dbae755460 100644 --- a/plugins/explore/src/components/DomainCard/index.ts +++ b/plugins/explore/src/components/DomainCard/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { DomainCard } from './DomainCard'; diff --git a/plugins/explore/src/components/ExploreLayout/ExploreLayout.tsx b/plugins/explore/src/components/ExploreLayout/ExploreLayout.tsx index bc9553c612..3ddf0b17f8 100644 --- a/plugins/explore/src/components/ExploreLayout/ExploreLayout.tsx +++ b/plugins/explore/src/components/ExploreLayout/ExploreLayout.tsx @@ -24,8 +24,8 @@ import { default as React } from 'react'; // TODO: This layout could be a shared based component if it was possible to create custom TabbedLayouts // A generalized version of createSubRoutesFromChildren, etc. would be required - -type SubRoute = { +/** @public */ +export type SubRoute = { path: string; title: string; children: JSX.Element; @@ -40,7 +40,8 @@ attachComponentData(Route, dataKey, true); // This causes all mount points that are discovered within this route to use the path of the route itself attachComponentData(Route, 'core.gatherMountPoints', true); -type ExploreLayoutProps = { +/** @public */ +export type ExploreLayoutProps = { title?: string; subtitle?: string; children?: React.ReactNode; @@ -57,12 +58,12 @@ type ExploreLayoutProps = { * * * ``` + * + * @public */ -export const ExploreLayout = ({ - title, - subtitle, - children, -}: ExploreLayoutProps) => { +export const ExploreLayout = (props: ExploreLayoutProps) => { + const { title, subtitle, children } = props; + const routes = useElementFilter(children, elements => elements .selectByComponentData({ diff --git a/plugins/explore/src/components/ExploreLayout/index.ts b/plugins/explore/src/components/ExploreLayout/index.ts index fa98ec78da..4d1781b3f4 100644 --- a/plugins/explore/src/components/ExploreLayout/index.ts +++ b/plugins/explore/src/components/ExploreLayout/index.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +export type { ExploreLayoutProps, SubRoute } from './ExploreLayout'; export { ExploreLayout } from './ExploreLayout'; diff --git a/plugins/explore/src/components/index.ts b/plugins/explore/src/components/index.ts index cefc549684..f8fba16910 100644 --- a/plugins/explore/src/components/index.ts +++ b/plugins/explore/src/components/index.ts @@ -14,5 +14,5 @@ * limitations under the License. */ -export { DomainCard } from './DomainCard'; -export { ExploreLayout } from './ExploreLayout'; +export * from './DomainCard'; +export * from './ExploreLayout'; diff --git a/plugins/explore/src/extensions.tsx b/plugins/explore/src/extensions.tsx index 6800f86966..c6d66c4c12 100644 --- a/plugins/explore/src/extensions.tsx +++ b/plugins/explore/src/extensions.tsx @@ -21,6 +21,7 @@ import { createRoutableExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const ExplorePage = explorePlugin.provide( createRoutableExtension({ name: 'ExplorePage', @@ -30,6 +31,7 @@ export const ExplorePage = explorePlugin.provide( }), ); +/** @public */ export const DomainExplorerContent = explorePlugin.provide( createComponentExtension({ name: 'DomainExplorerContent', @@ -42,6 +44,7 @@ export const DomainExplorerContent = explorePlugin.provide( }), ); +/** @public */ export const GroupsExplorerContent = explorePlugin.provide( createComponentExtension({ name: 'GroupsExplorerContent', @@ -54,6 +57,7 @@ export const GroupsExplorerContent = explorePlugin.provide( }), ); +/** @public */ export const ToolExplorerContent = explorePlugin.provide( createComponentExtension({ name: 'ToolExplorerContent', diff --git a/plugins/explore/src/plugin.ts b/plugins/explore/src/plugin.ts index cefb884834..a4bb538265 100644 --- a/plugins/explore/src/plugin.ts +++ b/plugins/explore/src/plugin.ts @@ -19,6 +19,7 @@ import { catalogEntityRouteRef, exploreRouteRef } from './routes'; import { exampleTools } from './util/examples'; import { createApiFactory, createPlugin } from '@backstage/core-plugin-api'; +/** @public */ export const explorePlugin = createPlugin({ id: 'explore', apis: [ diff --git a/plugins/explore/src/routes.ts b/plugins/explore/src/routes.ts index e8b393c4f6..0f66974a03 100644 --- a/plugins/explore/src/routes.ts +++ b/plugins/explore/src/routes.ts @@ -19,12 +19,14 @@ import { createRouteRef, } from '@backstage/core-plugin-api'; +/** @public */ export const exploreRouteRef = createRouteRef({ id: 'explore', }); /** * @deprecated This route is no longer used and can be removed + * @public */ export const catalogEntityRouteRef = createExternalRouteRef({ id: 'catalog-entity', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index b4fc287c03..000f0b8c84 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -210,7 +210,6 @@ const ALLOW_WARNINGS = [ 'plugins/circleci', 'plugins/cost-insights', 'plugins/dynatrace', - 'plugins/explore', 'plugins/explore-react', 'plugins/git-release-manager', 'plugins/github-actions', From b5986929b79999a96fcf6e486989401039a73d2c Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 13:28:09 +0200 Subject: [PATCH 156/275] chore: added in the ability to customise the review step Signed-off-by: blam --- .../Stepper/ReviewState.test.tsx | 74 +++++++++++++++++++ .../Stepper/ReviewState.tsx | 10 +-- 2 files changed, 79 insertions(+), 5 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx index d603213c19..2b2e706102 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.test.tsx @@ -63,4 +63,78 @@ describe('ReviewState', () => { expect(getByRole('row', { name: 'Name ******' })).toBeInTheDocument(); }); + + it('should hide from review if show is not set', async () => { + const formState = { + name: 'John Doe', + test: 'bob', + }; + + const schemas: ParsedTemplateSchema[] = [ + { + mergedSchema: { + type: 'object', + properties: { + name: { + type: 'string', + 'ui:widget': 'password', + 'ui:backstage': { + review: { + show: false, + }, + }, + }, + }, + }, + schema: {}, + title: 'test', + uiSchema: {}, + description: 'asd', + }, + ]; + + const { queryByRole } = render( + , + ); + + expect( + await queryByRole('row', { name: 'Name ******' }), + ).not.toBeInTheDocument(); + }); + + it('should allow for masking an option with a set text', () => { + const formState = { + name: 'John Doe', + test: 'bob', + }; + + const schemas: ParsedTemplateSchema[] = [ + { + mergedSchema: { + type: 'object', + properties: { + name: { + type: 'string', + 'ui:widget': 'password', + 'ui:backstage': { + review: { + mask: 'lols', + }, + }, + }, + }, + }, + schema: {}, + title: 'test', + uiSchema: {}, + description: 'asd', + }, + ]; + + const { getByRole } = render( + , + ); + + expect(getByRole('row', { name: 'Name lols' })).toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx index 4889b24483..f39a26622a 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/ReviewState.tsx @@ -34,10 +34,6 @@ export const ReviewState = (props: ReviewStateProps) => { props.formState, ); if (definitionInSchema) { - if (definitionInSchema['ui:widget'] === 'password') { - return [key, '******']; - } - const backstageReviewOptions = definitionInSchema['ui:backstage']?.review; @@ -45,10 +41,14 @@ export const ReviewState = (props: ReviewStateProps) => { if (backstageReviewOptions.mask) { return [key, backstageReviewOptions.mask]; } - if (!backstageReviewOptions.show) { + if (backstageReviewOptions.show === false) { return []; } } + + if (definitionInSchema['ui:widget'] === 'password') { + return [key, '******']; + } } } return [key, value]; From 689df685fb50451d92d6e28e3029cef052f9ccb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:29:04 +0200 Subject: [PATCH 157/275] allure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/allure/api-report.md | 8 -------- plugins/allure/src/components/annotationHelpers.ts | 2 ++ plugins/allure/src/plugin.ts | 2 ++ plugins/bitrise/api-report.md | 9 +++------ .../BitriseBuildsComponent/BitriseBuildsComponent.tsx | 2 ++ plugins/bitrise/src/extensions.ts | 1 + plugins/bitrise/src/index.ts | 5 ++++- plugins/bitrise/src/plugin.ts | 1 + scripts/api-extractor.ts | 2 -- 9 files changed, 15 insertions(+), 17 deletions(-) diff --git a/plugins/allure/api-report.md b/plugins/allure/api-report.md index e6f5d2aa67..c1ce499ab2 100644 --- a/plugins/allure/api-report.md +++ b/plugins/allure/api-report.md @@ -9,13 +9,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "ALLURE_PROJECT_ID_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ALLURE_PROJECT_ID_ANNOTATION = 'qameta.io/allure-project'; -// Warning: (ae-missing-release-tag) "allurePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const allurePlugin: BackstagePlugin< { @@ -25,13 +21,9 @@ export const allurePlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "EntityAllureReportContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityAllureReportContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "isAllureReportAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const isAllureReportAvailable: (entity: Entity) => boolean; ``` diff --git a/plugins/allure/src/components/annotationHelpers.ts b/plugins/allure/src/components/annotationHelpers.ts index 7500c1d88b..21b1a8161d 100644 --- a/plugins/allure/src/components/annotationHelpers.ts +++ b/plugins/allure/src/components/annotationHelpers.ts @@ -15,8 +15,10 @@ */ import { Entity } from '@backstage/catalog-model'; +/** @public */ export const ALLURE_PROJECT_ID_ANNOTATION = 'qameta.io/allure-project'; +/** @public */ export const isAllureReportAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[ALLURE_PROJECT_ID_ANNOTATION]); diff --git a/plugins/allure/src/plugin.ts b/plugins/allure/src/plugin.ts index a2eaa06a38..a6cfb25c88 100644 --- a/plugins/allure/src/plugin.ts +++ b/plugins/allure/src/plugin.ts @@ -26,6 +26,7 @@ export const allureRouteRef = createRouteRef({ id: 'allure', }); +/** @public */ export const allurePlugin = createPlugin({ id: 'allure', apis: [ @@ -42,6 +43,7 @@ export const allurePlugin = createPlugin({ }, }); +/** @public */ export const EntityAllureReportContent = allurePlugin.provide( createRoutableExtension({ name: 'EntityAllureReportContent', diff --git a/plugins/bitrise/api-report.md b/plugins/bitrise/api-report.md index f8421a532a..01d10c61cf 100644 --- a/plugins/bitrise/api-report.md +++ b/plugins/bitrise/api-report.md @@ -8,18 +8,15 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; -// Warning: (ae-missing-release-tag) "bitrisePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export const BITRISE_APP_ANNOTATION = 'bitrise.io/app'; + // @public (undocumented) export const bitrisePlugin: BackstagePlugin<{}, {}, {}>; -// Warning: (ae-missing-release-tag) "EntityBitriseContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityBitriseContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "isBitriseAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const isBitriseAvailable: (entity: Entity) => boolean; ``` diff --git a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx index f805f050fa..3c93fb20d7 100644 --- a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx +++ b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx @@ -32,8 +32,10 @@ export type Props = { entity: Entity; }; +/** @public */ export const BITRISE_APP_ANNOTATION = 'bitrise.io/app'; +/** @public */ export const isBitriseAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[BITRISE_APP_ANNOTATION]); diff --git a/plugins/bitrise/src/extensions.ts b/plugins/bitrise/src/extensions.ts index ccb5fb24dd..e588f092d8 100644 --- a/plugins/bitrise/src/extensions.ts +++ b/plugins/bitrise/src/extensions.ts @@ -17,6 +17,7 @@ import { bitrisePlugin } from './plugin'; import { createComponentExtension } from '@backstage/core-plugin-api'; +/** @public */ export const EntityBitriseContent = bitrisePlugin.provide( createComponentExtension({ name: 'EntityBitriseContent', diff --git a/plugins/bitrise/src/index.ts b/plugins/bitrise/src/index.ts index 3cf1389013..54cce62cec 100644 --- a/plugins/bitrise/src/index.ts +++ b/plugins/bitrise/src/index.ts @@ -22,4 +22,7 @@ export { bitrisePlugin } from './plugin'; export { EntityBitriseContent } from './extensions'; -export { isBitriseAvailable } from './components/BitriseBuildsComponent'; +export { + isBitriseAvailable, + BITRISE_APP_ANNOTATION, +} from './components/BitriseBuildsComponent'; diff --git a/plugins/bitrise/src/plugin.ts b/plugins/bitrise/src/plugin.ts index 92beda287c..2b75f6d8b5 100644 --- a/plugins/bitrise/src/plugin.ts +++ b/plugins/bitrise/src/plugin.ts @@ -28,6 +28,7 @@ export const bitriseApiRef = createApiRef({ id: 'plugin.bitrise.service', }); +/** @public */ export const bitrisePlugin = createPlugin({ id: 'bitrise', apis: [ diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 000f0b8c84..b53c5b0769 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -199,10 +199,8 @@ const PACKAGE_ROOTS = ['packages', 'plugins']; const ALLOW_WARNINGS = [ 'packages/core-components', - 'plugins/allure', 'plugins/apache-airflow', 'plugins/auth-backend', - 'plugins/bitrise', 'plugins/catalog', 'plugins/catalog-graphql', 'plugins/catalog-import', From fa07cc8ff260883135a6cfde671a0fe743d424ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:30:23 +0200 Subject: [PATCH 158/275] apache-airflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/apache-airflow/api-report.md | 4 ---- plugins/apache-airflow/src/plugin.ts | 2 ++ scripts/api-extractor.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/apache-airflow/api-report.md b/plugins/apache-airflow/api-report.md index 2f03d34205..b427a0148e 100644 --- a/plugins/apache-airflow/api-report.md +++ b/plugins/apache-airflow/api-report.md @@ -13,13 +13,9 @@ export const ApacheAirflowDagTable: (props: { dagIds?: string[] | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "ApacheAirflowPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ApacheAirflowPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "apacheAirflowPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const apacheAirflowPlugin: BackstagePlugin< { diff --git a/plugins/apache-airflow/src/plugin.ts b/plugins/apache-airflow/src/plugin.ts index 664cde36cc..4118857b05 100644 --- a/plugins/apache-airflow/src/plugin.ts +++ b/plugins/apache-airflow/src/plugin.ts @@ -25,6 +25,7 @@ import { discoveryApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const apacheAirflowPlugin = createPlugin({ id: 'apache-airflow', routes: { @@ -43,6 +44,7 @@ export const apacheAirflowPlugin = createPlugin({ ], }); +/** @public */ export const ApacheAirflowPage = apacheAirflowPlugin.provide( createRoutableExtension({ name: 'ApacheAirflowPage', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index b53c5b0769..1239cfd935 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -199,7 +199,6 @@ const PACKAGE_ROOTS = ['packages', 'plugins']; const ALLOW_WARNINGS = [ 'packages/core-components', - 'plugins/apache-airflow', 'plugins/auth-backend', 'plugins/catalog', 'plugins/catalog-graphql', From d558c5bf09e6b89e3b22e6528e63553cae662a04 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 13:46:24 +0200 Subject: [PATCH 159/275] chore: working some more on the review Signed-off-by: blam --- .../TemplateWizardPage/Stepper/Stepper.tsx | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx index be4a300755..f5656092c1 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/Stepper/Stepper.tsx @@ -35,6 +35,7 @@ const useStyles = makeStyles(theme => ({ backButton: { marginRight: theme.spacing(1), }, + footer: { display: 'flex', flexDirection: 'row', @@ -75,7 +76,7 @@ export const Stepper = (props: StepperProps) => { }, [props.extensions]); const validation = useMemo(() => { - return createAsyncValidators(steps[activeStep].mergedSchema, validators, { + return createAsyncValidators(steps[activeStep]?.mergedSchema, validators, { apiHolder, }); }, [steps, activeStep, validators, apiHolder]); @@ -104,6 +105,10 @@ export const Stepper = (props: StepperProps) => { setFormState(current => ({ ...current, ...formData })); }; + const handleCreate = () => { + // TODO(blam): Create the template in a modal with the ability to view the logs etc. + }; + return ( <> @@ -141,7 +146,21 @@ export const Stepper = (props: StepperProps) => { ) : ( - + <> + +
    + + +
    + )} From 2e0689e536245e45e0dd426f60d513a68a42e5b4 Mon Sep 17 00:00:00 2001 From: Niek te Grootenhuis Date: Fri, 19 Aug 2022 13:51:49 +0200 Subject: [PATCH 160/275] fix: createFactRetriever not supporting timeout Signed-off-by: Niek te Grootenhuis --- .changeset/strong-planes-return.md | 6 ++++++ .../src/service/fact/createFactRetriever.ts | 6 +++++- plugins/tech-insights-node/package.json | 1 + plugins/tech-insights-node/src/facts.ts | 3 ++- 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 .changeset/strong-planes-return.md diff --git a/.changeset/strong-planes-return.md b/.changeset/strong-planes-return.md new file mode 100644 index 0000000000..d7f02934c9 --- /dev/null +++ b/.changeset/strong-planes-return.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-tech-insights-backend': minor +'@backstage/plugin-tech-insights-node': minor +--- + +Support for timeout in FactRetrieverRegistrationOptions diff --git a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts index de49888e1b..c14cc260f9 100644 --- a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts +++ b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts @@ -13,11 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { HumanDuration } from '@backstage/backend-tasks'; import { FactLifecycle, FactRetriever, FactRetrieverRegistration, } from '@backstage/plugin-tech-insights-node'; +import { Duration } from 'luxon'; /** * @public @@ -31,6 +33,7 @@ export type FactRetrieverRegistrationOptions = { cadence: string; factRetriever: FactRetriever; lifecycle?: FactLifecycle; + timeout: Duration | HumanDuration; }; /** @@ -64,10 +67,11 @@ export type FactRetrieverRegistrationOptions = { export function createFactRetrieverRegistration( options: FactRetrieverRegistrationOptions, ): FactRetrieverRegistration { - const { cadence, factRetriever, lifecycle } = options; + const { cadence, factRetriever, lifecycle, timeout } = options; return { cadence, factRetriever, lifecycle, + timeout, }; } diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 0233fac050..355806bdfa 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -34,6 +34,7 @@ }, "dependencies": { "@backstage/backend-common": "^0.15.0", + "@backstage/backend-tasks": "^0.3.4", "@backstage/config": "^1.0.1", "@backstage/plugin-tech-insights-common": "^0.2.6", "@backstage/types": "^1.0.0", diff --git a/plugins/tech-insights-node/src/facts.ts b/plugins/tech-insights-node/src/facts.ts index cda238694f..41db302fd5 100644 --- a/plugins/tech-insights-node/src/facts.ts +++ b/plugins/tech-insights-node/src/facts.ts @@ -21,6 +21,7 @@ import { TokenManager, } from '@backstage/backend-common'; import { Logger } from 'winston'; +import { HumanDuration } from '@backstage/backend-tasks'; /** * A container for facts. The shape of the fact records needs to correspond to the FactSchema with same `ref` value. @@ -270,7 +271,7 @@ export type FactRetrieverRegistration = { * defaults to 5 minutes. * */ - timeout?: Duration; + timeout?: Duration | HumanDuration; /** * Fact lifecycle definition From 2fc41ebf0734f86cb7737988d42d12435c1e119b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 13:54:05 +0200 Subject: [PATCH 161/275] auth-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/funny-years-speak.md | 5 + plugins/auth-backend/api-report.md | 111 ++++++------------ .../src/lib/catalog/CatalogIdentityClient.ts | 20 ++-- .../src/lib/flow/authFlowHelpers.ts | 2 + plugins/auth-backend/src/lib/flow/types.ts | 2 + .../src/lib/oauth/OAuthAdapter.ts | 12 +- .../src/lib/oauth/OAuthEnvironmentHandler.ts | 1 + plugins/auth-backend/src/lib/oauth/helpers.ts | 3 + plugins/auth-backend/src/lib/oauth/index.ts | 1 + plugins/auth-backend/src/lib/oauth/types.ts | 7 ++ .../src/providers/atlassian/index.ts | 2 +- .../src/providers/atlassian/provider.ts | 5 +- .../src/providers/bitbucket/provider.ts | 2 + .../providers/cloudflare-access/provider.ts | 1 - .../createAuthProviderIntegration.ts | 2 + .../src/providers/github/provider.ts | 1 + plugins/auth-backend/src/providers/index.ts | 2 +- plugins/auth-backend/src/providers/types.ts | 4 + plugins/auth-backend/src/service/router.ts | 6 +- scripts/api-extractor.ts | 1 - 20 files changed, 89 insertions(+), 101 deletions(-) create mode 100644 .changeset/funny-years-speak.md diff --git a/.changeset/funny-years-speak.md b/.changeset/funny-years-speak.md new file mode 100644 index 0000000000..b82c10a59f --- /dev/null +++ b/.changeset/funny-years-speak.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +Removed the previously deprecated class `AtlassianAuthProvider`. Please use `providers.atlassian.create(...)` instead. diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index 649a31c963..be295f65f5 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -24,26 +24,6 @@ import { TokenSet } from 'openid-client'; import { UserEntity } from '@backstage/catalog-model'; import { UserinfoResponse } from 'openid-client'; -// @public @deprecated (undocumented) -export class AtlassianAuthProvider implements OAuthHandlers { - // Warning: (ae-forgotten-export) The symbol "AtlassianAuthProviderOptions" needs to be exported by the entry point index.d.ts - constructor(options: AtlassianAuthProviderOptions); - // (undocumented) - handler(req: express.Request): Promise<{ - response: OAuthResponse; - refreshToken: string | undefined; - }>; - // (undocumented) - refresh(req: OAuthRefreshRequest): Promise<{ - response: OAuthResponse; - refreshToken: string | undefined; - }>; - // Warning: (ae-forgotten-export) The symbol "RedirectInfo" needs to be exported by the entry point index.d.ts - // - // (undocumented) - start(req: OAuthStartRequest): Promise; -} - // @public export type AuthHandler = ( input: TAuthResult, @@ -63,8 +43,6 @@ export type AuthProviderConfig = { cookieConfigurer?: CookieConfigurer; }; -// Warning: (ae-missing-release-tag) "AuthProviderFactory" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AuthProviderFactory = (options: { providerId: string; @@ -74,8 +52,6 @@ export type AuthProviderFactory = (options: { resolverContext: AuthResolverContext; }) => AuthProviderRouteHandlers; -// Warning: (ae-missing-release-tag) "AuthProviderRouteHandlers" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface AuthProviderRouteHandlers { frameHandler(req: express.Request, res: express.Response): Promise; @@ -129,8 +105,6 @@ export type AwsAlbResult = { accessToken: string; }; -// Warning: (ae-missing-release-tag) "BitbucketOAuthResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BitbucketOAuthResult = { fullProfile: BitbucketPassportProfile; @@ -143,8 +117,6 @@ export type BitbucketOAuthResult = { refreshToken?: string; }; -// Warning: (ae-missing-release-tag) "BitbucketPassportProfile" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BitbucketPassportProfile = Profile & { id?: string; @@ -160,15 +132,14 @@ export type BitbucketPassportProfile = Profile & { }; }; -// Warning: (ae-missing-release-tag) "CatalogIdentityClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class CatalogIdentityClient { constructor(options: { catalogApi: CatalogApi; tokenManager: TokenManager }); - // Warning: (ae-forgotten-export) The symbol "UserQuery" needs to be exported by the entry point index.d.ts - findUser(query: UserQuery): Promise; - // Warning: (ae-forgotten-export) The symbol "MemberClaimQuery" needs to be exported by the entry point index.d.ts - resolveCatalogMembership(query: MemberClaimQuery): Promise; + findUser(query: { annotations: Record }): Promise; + resolveCatalogMembership(query: { + entityRefs: string[]; + logger?: Logger; + }): Promise; } // @public @@ -217,8 +188,6 @@ export type CookieConfigurer = (ctx: { secure: boolean; }; -// Warning: (ae-missing-release-tag) "createAuthProviderIntegration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function createAuthProviderIntegration< TCreateOptions extends unknown[], @@ -233,13 +202,9 @@ export function createAuthProviderIntegration< resolvers: Readonly; }>; -// Warning: (ae-missing-release-tag) "createOriginFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createOriginFilter(config: Config): (origin: string) => boolean; -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; @@ -248,13 +213,9 @@ export const defaultAuthProviderFactories: { [providerId: string]: AuthProviderFactory; }; -// Warning: (ae-missing-release-tag) "encodeState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const encodeState: (state: OAuthState) => string; -// Warning: (ae-missing-release-tag) "ensuresXRequestedWith" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ensuresXRequestedWith: (req: express.Request) => boolean; @@ -273,8 +234,6 @@ export type GcpIapTokenInfo = { // @public export function getDefaultOwnershipEntityRefs(entity: Entity): string[]; -// Warning: (ae-missing-release-tag) "GithubOAuthResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GithubOAuthResult = { fullProfile: Profile; @@ -295,20 +254,19 @@ export type OAuth2ProxyResult = { getHeader(name: string): string | undefined; }; -// Warning: (ae-missing-release-tag) "OAuthAdapter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class OAuthAdapter implements AuthProviderRouteHandlers { - constructor(handlers: OAuthHandlers, options: Options); + constructor(handlers: OAuthHandlers, options: OAuthAdapterOptions); // (undocumented) frameHandler(req: express.Request, res: express.Response): Promise; - // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts - // // (undocumented) static fromConfig( config: AuthProviderConfig, handlers: OAuthHandlers, - options: Pick, + options: Pick< + OAuthAdapterOptions, + 'providerId' | 'persistScopes' | 'callbackUrl' + >, ): OAuthAdapter; // (undocumented) logout(req: express.Request, res: express.Response): Promise; @@ -318,8 +276,18 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { start(req: express.Request, res: express.Response): Promise; } -// Warning: (ae-missing-release-tag) "OAuthEnvironmentHandler" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type OAuthAdapterOptions = { + providerId: string; + secure: boolean; + persistScopes?: boolean; + cookieDomain: string; + cookiePath: string; + appOrigin: string; + isOriginAllowed: (origin: string) => boolean; + callbackUrl: string; +}; + // @public (undocumented) export class OAuthEnvironmentHandler implements AuthProviderRouteHandlers { constructor(handlers: Map); @@ -352,8 +320,6 @@ export interface OAuthHandlers { start(req: OAuthStartRequest): Promise; } -// Warning: (ae-missing-release-tag) "OAuthProviderInfo" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type OAuthProviderInfo = { accessToken: string; @@ -362,8 +328,6 @@ export type OAuthProviderInfo = { scope: string; }; -// Warning: (ae-missing-release-tag) "OAuthProviderOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type OAuthProviderOptions = { clientId: string; @@ -371,8 +335,6 @@ export type OAuthProviderOptions = { callbackUrl: string; }; -// Warning: (ae-missing-release-tag) "OAuthRefreshRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type OAuthRefreshRequest = express.Request<{}> & { scope: string; @@ -386,8 +348,6 @@ export type OAuthResponse = { backstageIdentity?: BackstageSignInResult; }; -// Warning: (ae-missing-release-tag) "OAuthResult" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type OAuthResult = { fullProfile: Profile; @@ -400,16 +360,12 @@ export type OAuthResult = { refreshToken?: string; }; -// Warning: (ae-missing-release-tag) "OAuthStartRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type OAuthStartRequest = express.Request<{}> & { scope: string; state: OAuthState; }; -// Warning: (ae-missing-release-tag) "OAuthState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type OAuthState = { nonce: string; @@ -424,8 +380,6 @@ export type OidcAuthResult = { userinfo: UserinfoResponse; }; -// Warning: (ae-missing-release-tag) "postMessageResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const postMessageResponse: ( res: express.Response, @@ -445,6 +399,11 @@ export type ProfileInfo = { picture?: string; }; +// @public (undocumented) +export type ProviderFactories = { + [s: string]: AuthProviderFactory; +}; + // @public export const providers: Readonly<{ atlassian: Readonly<{ @@ -692,13 +651,15 @@ export const providers: Readonly<{ }>; }>; -// Warning: (ae-missing-release-tag) "readState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const readState: (stateString: string) => OAuthState; -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type RedirectInfo = { + url: string; + status?: number; +}; + // @public (undocumented) export interface RouterOptions { // (undocumented) @@ -709,8 +670,6 @@ export interface RouterOptions { discovery: PluginEndpointDiscovery; // (undocumented) logger: Logger; - // Warning: (ae-forgotten-export) The symbol "ProviderFactories" needs to be exported by the entry point index.d.ts - // // (undocumented) providerFactories?: ProviderFactories; // (undocumented) @@ -749,13 +708,9 @@ export type TokenParams = { }; }; -// Warning: (ae-missing-release-tag) "verifyNonce" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const verifyNonce: (req: express.Request, providerId: string) => void; -// Warning: (ae-missing-release-tag) "WebMessageResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type WebMessageResponse = | { diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts index 502da913af..494e8b4d38 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts @@ -26,17 +26,10 @@ import { } from '@backstage/catalog-model'; import { TokenManager } from '@backstage/backend-common'; -type UserQuery = { - annotations: Record; -}; - -type MemberClaimQuery = { - entityRefs: string[]; - logger?: Logger; -}; - /** * A catalog client tailored for reading out identity data from the catalog. + * + * @public */ export class CatalogIdentityClient { private readonly catalogApi: CatalogApi; @@ -52,7 +45,9 @@ export class CatalogIdentityClient { * * Throws a NotFoundError or ConflictError if 0 or multiple users are found. */ - async findUser(query: UserQuery): Promise { + async findUser(query: { + annotations: Record; + }): Promise { const filter: Record = { kind: 'user', }; @@ -81,7 +76,10 @@ export class CatalogIdentityClient { * * Returns a superset of the entity names that can be passed directly to `issueToken` as `ent`. */ - async resolveCatalogMembership(query: MemberClaimQuery): Promise { + async resolveCatalogMembership(query: { + entityRefs: string[]; + logger?: Logger; + }): Promise { const { entityRefs, logger } = query; const resolvedEntityRefs = entityRefs .map((ref: string) => { diff --git a/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts b/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts index a924c80242..94ac4fba15 100644 --- a/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts +++ b/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts @@ -24,6 +24,7 @@ export const safelyEncodeURIComponent = (value: string) => { return encodeURIComponent(value).replace(/'/g, '%27'); }; +/** @public */ export const postMessageResponse = ( res: express.Response, appOrigin: string, @@ -68,6 +69,7 @@ export const postMessageResponse = ( res.end(``); }; +/** @public */ export const ensuresXRequestedWith = (req: express.Request) => { const requiredHeader = req.header('X-Requested-With'); if (!requiredHeader || requiredHeader !== 'XMLHttpRequest') { diff --git a/plugins/auth-backend/src/lib/flow/types.ts b/plugins/auth-backend/src/lib/flow/types.ts index aaa8b55d1c..f67198a1b0 100644 --- a/plugins/auth-backend/src/lib/flow/types.ts +++ b/plugins/auth-backend/src/lib/flow/types.ts @@ -19,6 +19,8 @@ import { AuthResponse } from '../../providers/types'; /** * Payload sent as a post message after the auth request is complete. * If successful then has a valid payload with Auth information else contains an error. + * + * @public */ export type WebMessageResponse = | { diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts index 9c28ed8fad..6caa9fed12 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts @@ -44,7 +44,8 @@ import { prepareBackstageIdentityResponse } from '../../providers/prepareBacksta export const THOUSAND_DAYS_MS = 1000 * 24 * 60 * 60 * 1000; export const TEN_MINUTES_MS = 600 * 1000; -export type Options = { +/** @public */ +export type OAuthAdapterOptions = { providerId: string; secure: boolean; persistScopes?: boolean; @@ -54,11 +55,16 @@ export type Options = { isOriginAllowed: (origin: string) => boolean; callbackUrl: string; }; + +/** @public */ export class OAuthAdapter implements AuthProviderRouteHandlers { static fromConfig( config: AuthProviderConfig, handlers: OAuthHandlers, - options: Pick, + options: Pick< + OAuthAdapterOptions, + 'providerId' | 'persistScopes' | 'callbackUrl' + >, ): OAuthAdapter { const { origin: appOrigin } = new URL(config.appUrl); @@ -83,7 +89,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { constructor( private readonly handlers: OAuthHandlers, - private readonly options: Options, + private readonly options: OAuthAdapterOptions, ) { this.baseCookieOptions = { httpOnly: true, diff --git a/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts b/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts index 95a0547a5e..1c6d45d0a4 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts @@ -20,6 +20,7 @@ import { InputError, NotFoundError } from '@backstage/errors'; import { readState } from './helpers'; import { AuthProviderRouteHandlers } from '../../providers/types'; +/** @public */ export class OAuthEnvironmentHandler implements AuthProviderRouteHandlers { static mapConfig( config: Config, diff --git a/plugins/auth-backend/src/lib/oauth/helpers.ts b/plugins/auth-backend/src/lib/oauth/helpers.ts index eec25696a3..63d5d62ef9 100644 --- a/plugins/auth-backend/src/lib/oauth/helpers.ts +++ b/plugins/auth-backend/src/lib/oauth/helpers.ts @@ -19,6 +19,7 @@ import { OAuthState } from './types'; import pickBy from 'lodash/pickBy'; import { CookieConfigurer } from '../../providers/types'; +/** @public */ export const readState = (stateString: string): OAuthState => { const state = Object.fromEntries( new URLSearchParams(Buffer.from(stateString, 'hex').toString('utf-8')), @@ -35,6 +36,7 @@ export const readState = (stateString: string): OAuthState => { return state as OAuthState; }; +/** @public */ export const encodeState = (state: OAuthState): string => { const stateString = new URLSearchParams( pickBy(state, value => value !== undefined), @@ -43,6 +45,7 @@ export const encodeState = (state: OAuthState): string => { return Buffer.from(stateString, 'utf-8').toString('hex'); }; +/** @public */ export const verifyNonce = (req: express.Request, providerId: string) => { const cookieNonce = req.cookies[`${providerId}-nonce`]; const state: OAuthState = readState(req.query.state?.toString() ?? ''); diff --git a/plugins/auth-backend/src/lib/oauth/index.ts b/plugins/auth-backend/src/lib/oauth/index.ts index b7b37f5920..671e8e48e9 100644 --- a/plugins/auth-backend/src/lib/oauth/index.ts +++ b/plugins/auth-backend/src/lib/oauth/index.ts @@ -15,6 +15,7 @@ */ export { OAuthEnvironmentHandler } from './OAuthEnvironmentHandler'; +export type { OAuthAdapterOptions } from './OAuthAdapter'; export { OAuthAdapter } from './OAuthAdapter'; export { encodeState, verifyNonce, readState } from './helpers'; export type { diff --git a/plugins/auth-backend/src/lib/oauth/types.ts b/plugins/auth-backend/src/lib/oauth/types.ts index 6e5fe19859..bfe0aaff50 100644 --- a/plugins/auth-backend/src/lib/oauth/types.ts +++ b/plugins/auth-backend/src/lib/oauth/types.ts @@ -21,6 +21,8 @@ import { RedirectInfo, ProfileInfo } from '../../providers/types'; /** * Common options for passport.js-based OAuth providers + * + * @public */ export type OAuthProviderOptions = { /** @@ -37,6 +39,7 @@ export type OAuthProviderOptions = { callbackUrl: string; }; +/** @public */ export type OAuthResult = { fullProfile: PassportProfile; params: { @@ -59,6 +62,7 @@ export type OAuthResponse = { backstageIdentity?: BackstageSignInResult; }; +/** @public */ export type OAuthProviderInfo = { /** * An access token issued for the signed in user. @@ -78,6 +82,7 @@ export type OAuthProviderInfo = { scope: string; }; +/** @public */ export type OAuthState = { /* A type for the serialized value in the `state` parameter of the OAuth authorization flow */ @@ -87,11 +92,13 @@ export type OAuthState = { scope?: string; }; +/** @public */ export type OAuthStartRequest = express.Request<{}> & { scope: string; state: OAuthState; }; +/** @public */ export type OAuthRefreshRequest = express.Request<{}> & { scope: string; refreshToken: string; diff --git a/plugins/auth-backend/src/providers/atlassian/index.ts b/plugins/auth-backend/src/providers/atlassian/index.ts index 8dff0197a3..f001463694 100644 --- a/plugins/auth-backend/src/providers/atlassian/index.ts +++ b/plugins/auth-backend/src/providers/atlassian/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { atlassian, AtlassianAuthProvider } from './provider'; +export { atlassian } from './provider'; diff --git a/plugins/auth-backend/src/providers/atlassian/provider.ts b/plugins/auth-backend/src/providers/atlassian/provider.ts index b693d226a2..eb6890a5a4 100644 --- a/plugins/auth-backend/src/providers/atlassian/provider.ts +++ b/plugins/auth-backend/src/providers/atlassian/provider.ts @@ -44,6 +44,7 @@ import { import express from 'express'; import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; +/** @public */ export type AtlassianAuthProviderOptions = OAuthProviderOptions & { scopes: string; signInResolver?: SignInResolver; @@ -58,10 +59,6 @@ export const atlassianDefaultAuthHandler: AuthHandler = async ({ profile: makeProfileInfo(fullProfile, params.id_token), }); -/** - * @public - * @deprecated This export is deprecated and will be removed in the future. - */ export class AtlassianAuthProvider implements OAuthHandlers { private readonly _strategy: AtlassianStrategy; private readonly signInResolver?: SignInResolver; diff --git a/plugins/auth-backend/src/providers/bitbucket/provider.ts b/plugins/auth-backend/src/providers/bitbucket/provider.ts index e3bd044466..0bbebd2097 100644 --- a/plugins/auth-backend/src/providers/bitbucket/provider.ts +++ b/plugins/auth-backend/src/providers/bitbucket/provider.ts @@ -54,6 +54,7 @@ type Options = OAuthProviderOptions & { resolverContext: AuthResolverContext; }; +/** @public */ export type BitbucketOAuthResult = { fullProfile: BitbucketPassportProfile; params: { @@ -65,6 +66,7 @@ export type BitbucketOAuthResult = { refreshToken?: string; }; +/** @public */ export type BitbucketPassportProfile = PassportProfile & { id?: string; displayName?: string; diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts index a2c16fcebf..4f9730dfaf 100644 --- a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts @@ -146,7 +146,6 @@ export type CloudflareAccessIdentityProfile = { }; /** - * * @public */ export type CloudflareAccessResult = { diff --git a/plugins/auth-backend/src/providers/createAuthProviderIntegration.ts b/plugins/auth-backend/src/providers/createAuthProviderIntegration.ts index c6e9107353..9143d63143 100644 --- a/plugins/auth-backend/src/providers/createAuthProviderIntegration.ts +++ b/plugins/auth-backend/src/providers/createAuthProviderIntegration.ts @@ -22,6 +22,8 @@ import { AuthProviderFactory, SignInResolver } from './types'; * * The returned object facilitates the creation of provider instances, and * supplies built-in sign-in resolvers for the specific provider. + * + * @public */ export function createAuthProviderIntegration< TCreateOptions extends unknown[], diff --git a/plugins/auth-backend/src/providers/github/provider.ts b/plugins/auth-backend/src/providers/github/provider.ts index 9c115b5eb8..4ac91516a3 100644 --- a/plugins/auth-backend/src/providers/github/provider.ts +++ b/plugins/auth-backend/src/providers/github/provider.ts @@ -52,6 +52,7 @@ type PrivateInfo = { refreshToken?: string; }; +/** @public */ export type GithubOAuthResult = { fullProfile: PassportProfile; params: { diff --git a/plugins/auth-backend/src/providers/index.ts b/plugins/auth-backend/src/providers/index.ts index 83dd1c6c1f..e0860d3f78 100644 --- a/plugins/auth-backend/src/providers/index.ts +++ b/plugins/auth-backend/src/providers/index.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -export { AtlassianAuthProvider } from './atlassian'; export type { AwsAlbResult } from './aws-alb'; export type { BitbucketOAuthResult, @@ -50,6 +49,7 @@ export type { StateEncoder, AuthResponse, ProfileInfo, + RedirectInfo, } from './types'; export { prepareBackstageIdentityResponse } from './prepareBackstageIdentityResponse'; diff --git a/plugins/auth-backend/src/providers/types.ts b/plugins/auth-backend/src/providers/types.ts index c99bdfbadb..f0f94f1936 100644 --- a/plugins/auth-backend/src/providers/types.ts +++ b/plugins/auth-backend/src/providers/types.ts @@ -126,6 +126,7 @@ export type AuthProviderConfig = { cookieConfigurer?: CookieConfigurer; }; +/** @public */ export type RedirectInfo = { /** * URL to redirect to @@ -147,6 +148,8 @@ export type RedirectInfo = { * `/auth/[provider]/handler/frame -> frameHandler` * `/auth/[provider]/refresh -> refresh` * `/auth/[provider]/logout -> logout` + * + * @public */ export interface AuthProviderRouteHandlers { /** @@ -192,6 +195,7 @@ export interface AuthProviderRouteHandlers { logout?(req: express.Request, res: express.Response): Promise; } +/** @public */ export type AuthProviderFactory = (options: { providerId: string; globalConfig: AuthProviderConfig; diff --git a/plugins/auth-backend/src/service/router.ts b/plugins/auth-backend/src/service/router.ts index e4fa5eeea4..8fd758f1b4 100644 --- a/plugins/auth-backend/src/service/router.ts +++ b/plugins/auth-backend/src/service/router.ts @@ -36,8 +36,10 @@ import passport from 'passport'; import { Minimatch } from 'minimatch'; import { CatalogAuthResolverContext } from '../lib/resolvers'; -type ProviderFactories = { [s: string]: AuthProviderFactory }; +/** @public */ +export type ProviderFactories = { [s: string]: AuthProviderFactory }; +/** @public */ export interface RouterOptions { logger: Logger; database: PluginDatabaseManager; @@ -48,6 +50,7 @@ export interface RouterOptions { providerFactories?: ProviderFactories; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { @@ -187,6 +190,7 @@ export async function createRouter( return router; } +/** @public */ export function createOriginFilter( config: Config, ): (origin: string) => boolean { diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 1239cfd935..a68aa62249 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -199,7 +199,6 @@ const PACKAGE_ROOTS = ['packages', 'plugins']; const ALLOW_WARNINGS = [ 'packages/core-components', - 'plugins/auth-backend', 'plugins/catalog', 'plugins/catalog-graphql', 'plugins/catalog-import', From 192d856495bec8b387d371a0bd8717bb24e7837e Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 13:55:09 +0200 Subject: [PATCH 162/275] chore: added changeset : Signed-off-by: blam --- .changeset/two-planets-provide.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/two-planets-provide.md diff --git a/.changeset/two-planets-provide.md b/.changeset/two-planets-provide.md new file mode 100644 index 0000000000..d794a90dbf --- /dev/null +++ b/.changeset/two-planets-provide.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': major +--- + +Implementing review step for scaffolder/next From cfddfca453611eac16ec26fb07afee57f9ca95da Mon Sep 17 00:00:00 2001 From: Niek te Grootenhuis Date: Fri, 19 Aug 2022 14:01:59 +0200 Subject: [PATCH 163/275] docs: added missing param to docs Signed-off-by: Niek te Grootenhuis --- .../src/service/fact/createFactRetriever.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts index c14cc260f9..6f1cc25d48 100644 --- a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts +++ b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts @@ -27,6 +27,7 @@ import { Duration } from 'luxon'; * @param cadence - cron expression to indicate when the fact retriever should be triggered * @param factRetriever - Implementation of fact retriever consisting of at least id, version, schema and handler * @param lifecycle - Optional lifecycle definition indicating the cleanup logic of facts when this retriever is run + * @param timeout - Optional duration to determine how long the fact retriever should be allowed to run, defaults to 5 minutes * */ export type FactRetrieverRegistrationOptions = { @@ -40,10 +41,10 @@ export type FactRetrieverRegistrationOptions = { * @public * * A helper function to construct fact retriever registrations. - * - * @param cadence - cron expression to indicate when the fact retriever should be triggered - * @param factRetriever - Implementation of fact retriever consisting of at least id, version, schema and handler - * @param lifecycle - Optional lifecycle definition indicating the cleanup logic of facts when this retriever is run + * @param options.cadence - Cron expression to indicate when the fact retriever should be triggered + * @param options.factRetriever - Implementation of fact retriever consisting of at least id, version, schema and handler + * @param options.lifecycle - Optional lifecycle definition indicating the cleanup logic of facts when this retriever is run + * @param options.timeout - Optional duration to determine how long the fact retriever should be allowed to run, defaults to 5 minutes * * * @remarks From 03fe82e6d1ac0247b67721e5b35ca9eef81dbe0c Mon Sep 17 00:00:00 2001 From: Niek te Grootenhuis Date: Fri, 19 Aug 2022 14:02:36 +0200 Subject: [PATCH 164/275] chore: made timeout property optional Signed-off-by: Niek te Grootenhuis --- .../src/service/fact/createFactRetriever.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts index 6f1cc25d48..aa4d9aff03 100644 --- a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts +++ b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts @@ -34,7 +34,7 @@ export type FactRetrieverRegistrationOptions = { cadence: string; factRetriever: FactRetriever; lifecycle?: FactLifecycle; - timeout: Duration | HumanDuration; + timeout?: Duration | HumanDuration; }; /** From 7f7cbf1796b1bc3b95f6418647d41fd987d1624a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:03:47 +0200 Subject: [PATCH 165/275] catalog, but just partial MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog/api-report.md | 19 ++++++++++++------- .../EntityLinksCard/EntityLinksCard.tsx | 4 ++-- .../src/components/EntityLinksCard/index.ts | 1 + .../src/components/EntityLinksCard/types.ts | 2 ++ plugins/catalog/src/index.ts | 3 +++ plugins/catalog/src/options.ts | 1 + 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 98bc7ab89e..f3bec2ba43 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -64,12 +64,20 @@ export type BackstageOverrides = Overrides & { >; }; +// @public (undocumented) +export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; + // @public (undocumented) export const CatalogEntityPage: () => JSX.Element; // @public (undocumented) export const CatalogIndexPage: (props: DefaultCatalogPageProps) => JSX.Element; +// @public (undocumented) +export type CatalogInputPluginOptions = { + createButtonTitle: string; +}; + // @public (undocumented) export function CatalogKindHeader(props: CatalogKindHeaderProps): JSX.Element; @@ -79,8 +87,6 @@ export interface CatalogKindHeaderProps { initialFilter?: string; } -// Warning: (ae-forgotten-export) The symbol "CatalogInputPluginOptions" needs to be exported by the entry point index.d.ts -// // @public (undocumented) export const catalogPlugin: BackstagePlugin< { @@ -176,6 +182,9 @@ export interface CatalogTableRow { }; } +// @public (undocumented) +export type ColumnBreakpoints = Record; + // @public export interface DefaultCatalogPageProps { // (undocumented) @@ -296,15 +305,11 @@ export type EntityLayoutRouteProps = { >; }; -// Warning: (ae-forgotten-export) The symbol "EntityLinksCard" needs to be exported by the entry point index.d.ts -// // @public (undocumented) -export const EntityLinksCard: EntityLinksCard_2; +export const EntityLinksCard: (props: EntityLinksCardProps) => JSX.Element; // @public (undocumented) export interface EntityLinksCardProps { - // Warning: (ae-forgotten-export) The symbol "ColumnBreakpoints" needs to be exported by the entry point index.d.ts - // // (undocumented) cols?: ColumnBreakpoints | number; // (undocumented) diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx index 10302d7837..ebc551c29f 100644 --- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx +++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx @@ -29,7 +29,7 @@ export interface EntityLinksCardProps { variant?: InfoCardVariants; } -export function EntityLinksCard(props: EntityLinksCardProps) { +export const EntityLinksCard = (props: EntityLinksCardProps) => { const { cols = undefined, variant } = props; const { entity } = useEntity(); const app = useApp(); @@ -55,4 +55,4 @@ export function EntityLinksCard(props: EntityLinksCardProps) { )} ); -} +}; diff --git a/plugins/catalog/src/components/EntityLinksCard/index.ts b/plugins/catalog/src/components/EntityLinksCard/index.ts index dcd4366066..eb3beda6ea 100644 --- a/plugins/catalog/src/components/EntityLinksCard/index.ts +++ b/plugins/catalog/src/components/EntityLinksCard/index.ts @@ -17,3 +17,4 @@ export { EntityLinksCard } from './EntityLinksCard'; export type { EntityLinksCardProps } from './EntityLinksCard'; export type { EntityLinksEmptyStateClassKey } from './EntityLinksEmptyState'; +export type { Breakpoint, ColumnBreakpoints } from './types'; diff --git a/plugins/catalog/src/components/EntityLinksCard/types.ts b/plugins/catalog/src/components/EntityLinksCard/types.ts index e3cd1a94ac..fdd9c9c07c 100644 --- a/plugins/catalog/src/components/EntityLinksCard/types.ts +++ b/plugins/catalog/src/components/EntityLinksCard/types.ts @@ -14,6 +14,8 @@ * limitations under the License. */ +/** @public */ export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; +/** @public */ export type ColumnBreakpoints = Record; diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index f0f94656d5..a69d4004a1 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -37,6 +37,7 @@ export * from './components/EntityProcessingErrorsPanel'; export * from './components/EntitySwitch'; export * from './components/FilteredEntityLayout'; export * from './overridableComponents'; +export type { CatalogInputPluginOptions } from './options'; export { CatalogEntityPage, CatalogIndexPage, @@ -59,6 +60,8 @@ export type { DependsOnResourcesCardProps } from './components/DependsOnResource export type { EntityLinksEmptyStateClassKey, EntityLinksCardProps, + Breakpoint, + ColumnBreakpoints, } from './components/EntityLinksCard'; export type { SystemDiagramCardClassKey } from './components/SystemDiagramCard'; export type { DefaultCatalogPageProps } from './components/CatalogPage'; diff --git a/plugins/catalog/src/options.ts b/plugins/catalog/src/options.ts index 1d8b972ec2..4061f512ac 100644 --- a/plugins/catalog/src/options.ts +++ b/plugins/catalog/src/options.ts @@ -20,6 +20,7 @@ export type CatalogPluginOptions = { createButtonTitle: string; }; +/** @public */ export type CatalogInputPluginOptions = { createButtonTitle: string; }; From 8b0d2528fbce2364ed78865f8fd4b6edce3fb36d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:05:29 +0200 Subject: [PATCH 166/275] catalog-graphql MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-graphql/api-report.md | 4 ---- plugins/catalog-graphql/src/graphql/module.ts | 2 ++ scripts/api-extractor.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/catalog-graphql/api-report.md b/plugins/catalog-graphql/api-report.md index e14fd988d0..f03ed94af5 100644 --- a/plugins/catalog-graphql/api-report.md +++ b/plugins/catalog-graphql/api-report.md @@ -7,13 +7,9 @@ import { Config } from '@backstage/config'; import { Logger } from 'winston'; import { Module } from 'graphql-modules'; -// Warning: (ae-missing-release-tag) "createModule" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createModule(options: ModuleOptions): Promise; -// Warning: (ae-missing-release-tag) "ModuleOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ModuleOptions { // (undocumented) diff --git a/plugins/catalog-graphql/src/graphql/module.ts b/plugins/catalog-graphql/src/graphql/module.ts index e33ee429b4..e27adbbaf1 100644 --- a/plugins/catalog-graphql/src/graphql/module.ts +++ b/plugins/catalog-graphql/src/graphql/module.ts @@ -27,11 +27,13 @@ import GraphQLJSON, { GraphQLJSONObject } from 'graphql-type-json'; import { Entity } from '@backstage/catalog-model'; import typeDefs from '../schema'; +/** @public */ export interface ModuleOptions { logger: Logger; config: Config; } +/** @public */ export async function createModule(options: ModuleOptions): Promise { const catalogClient = new CatalogClient( options.config.getString('backend.baseUrl'), diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index a68aa62249..18031e5486 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -200,7 +200,6 @@ const PACKAGE_ROOTS = ['packages', 'plugins']; const ALLOW_WARNINGS = [ 'packages/core-components', 'plugins/catalog', - 'plugins/catalog-graphql', 'plugins/catalog-import', 'plugins/cicd-statistics', 'plugins/circleci', From 1694363b09f8fbef85012ef0d9ec6ad9847903f0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 19 Aug 2022 14:09:45 +0200 Subject: [PATCH 167/275] root: remove unused resolutions override Signed-off-by: Patrik Oldsberg --- package.json | 1 - yarn.lock | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index cfcfe00b1d..3fcb63aa86 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ ] }, "resolutions": { - "**/@graphql-codegen/cli/**/ws": "^8.0.0", "@types/react": "^17", "@types/react-dom": "^17" }, diff --git a/yarn.lock b/yarn.lock index f1c74e58e7..9c3966d3f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26563,7 +26563,7 @@ write-pkg@^4.0.0: type-fest "^0.4.1" write-json-file "^3.2.0" -ws@8.8.1, ws@^8.0.0, ws@^8.3.0: +ws@8.8.1, ws@^8.3.0: version "8.8.1" resolved "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== From 988e023fd25106492596a9509253de83515301f8 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Fri, 19 Aug 2022 13:59:43 +0100 Subject: [PATCH 168/275] docs: add tag public on readme card and update api-reports Signed-off-by: Alisson Fabiano --- plugins/azure-devops/api-report.md | 2 -- plugins/azure-devops/src/plugin.ts | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/azure-devops/api-report.md b/plugins/azure-devops/api-report.md index 5d59f263fb..d083d00dba 100644 --- a/plugins/azure-devops/api-report.md +++ b/plugins/azure-devops/api-report.md @@ -235,8 +235,6 @@ export const EntityAzurePullRequestsContent: (props: { defaultLimit?: number | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "EntityAzureReadmeCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityAzureReadmeCard: (props: { maxHeight?: number | undefined; diff --git a/plugins/azure-devops/src/plugin.ts b/plugins/azure-devops/src/plugin.ts index 7e0b0d96b8..4dd423f35a 100644 --- a/plugins/azure-devops/src/plugin.ts +++ b/plugins/azure-devops/src/plugin.ts @@ -109,6 +109,7 @@ export const EntityAzurePullRequestsContent = azureDevOpsPlugin.provide( }), ); +/** @public */ export const EntityAzureReadmeCard = azureDevOpsPlugin.provide( createComponentExtension({ name: 'EntityAzureReadmeCard', From 91d6153840227554c7122816ebcd83885b582210 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:17:57 +0000 Subject: [PATCH 169/275] fix(deps): update dependency dockerode to v3.3.4 Signed-off-by: Renovate Bot --- yarn.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f1c74e58e7..b5453d9850 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12085,10 +12085,11 @@ docker-modem@^3.0.0: ssh2 "^1.4.0" dockerode@^3.3.1: - version "3.3.3" - resolved "https://registry.npmjs.org/dockerode/-/dockerode-3.3.3.tgz#7504db10d23866c6f267e7b0b7b4a75fc2203e8d" - integrity sha512-lvKV6/NGf2/CYLt5V4c0fd6Fl9XZSCo1Z2HBT9ioKrKLMB2o+gA62Uza8RROpzGvYv57KJx2dKu+ZwSpB//OIA== + version "3.3.4" + resolved "https://registry.npmjs.org/dockerode/-/dockerode-3.3.4.tgz#875de614a1be797279caa9fe27e5637cf0e40548" + integrity sha512-3EUwuXnCU+RUlQEheDjmBE0B7q66PV9Rw5NiH1sXwINq0M9c5ERP9fxgkw36ZHOtzf4AGEEYySnkx/sACC9EgQ== dependencies: + "@balena/dockerignore" "^1.0.2" docker-modem "^3.0.0" tar-fs "~2.0.1" From f38611bb2ea42db2230f04ed372c449259711656 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 14:07:16 +0000 Subject: [PATCH 170/275] fix(deps): update dependency graphql-ws to v5.10.1 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f1670127d2..caa74dd72a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14623,9 +14623,9 @@ graphql-type-json@^0.3.2: integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== graphql-ws@^5.4.1, graphql-ws@^5.9.0: - version "5.10.0" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.10.0.tgz#3fb47a4e809e0d2e7c197f1bca754fa9f31b940e" - integrity sha512-ewbPzHQdRZgNCPDH9Yr6xccSeZfk3fmpO/AGGGg4KkM5gc6oAOJQ10Oui1EqprhVOyRbOll9bw2qAkOiOwfTag== + version "5.10.1" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.10.1.tgz#c5402a62f1be13e244ab90a6306b94f643577312" + integrity sha512-MKm/3SRd1vj5Km8NaujsgeGRTKZQjUN5HRnIMJ8dL2UznKoxvrtQyJqTmqJt0f6vQd9AooDg/+baXo3huiY4Ew== graphql@^16.0.0, graphql@^16.3.0: version "16.6.0" From 842cc7ab0692aa1ed427d94f20d9d782668b18d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:36:21 +0200 Subject: [PATCH 171/275] ilert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/ilert/api-report.md | 592 ++++++++++++++++-- plugins/ilert/src/api/client.ts | 18 +- plugins/ilert/src/api/index.ts | 1 + plugins/ilert/src/api/types.ts | 22 +- .../src/components/ILertCard/ILertCard.tsx | 2 + .../src/components/ILertPage/ILertPage.tsx | 1 + plugins/ilert/src/index.ts | 3 + plugins/ilert/src/plugin.ts | 3 + plugins/ilert/src/route-refs.tsx | 1 + plugins/ilert/src/types.ts | 41 ++ scripts/api-extractor.ts | 1 - 11 files changed, 613 insertions(+), 72 deletions(-) diff --git a/plugins/ilert/api-report.md b/plugins/ilert/api-report.md index a4e6a7a76c..96576a8358 100644 --- a/plugins/ilert/api-report.md +++ b/plugins/ilert/api-report.md @@ -13,20 +13,252 @@ import { Entity } from '@backstage/catalog-model'; import { IconComponent } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "EntityILertCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export const ACCEPTED = 'ACCEPTED'; + +// @public (undocumented) +export interface AlertSource { + // (undocumented) + active?: boolean; + // (undocumented) + autoResolutionTimeout?: string; + // (undocumented) + autotaskMetadata?: AlertSourceAutotaskMetadata; + // (undocumented) + darkIconUrl?: string; + // (undocumented) + emailFiltered?: boolean; + // (undocumented) + emailPredicates?: AlertSourceEmailPredicate[]; + // (undocumented) + emailResolveFiltered?: boolean; + // (undocumented) + emailResolvePredicates?: AlertSourceEmailPredicate[]; + // (undocumented) + escalationPolicy: EscalationPolicy; + // (undocumented) + filterOperator?: AlertSourceFilterOperator; + // (undocumented) + heartbeat?: AlertSourceHeartbeat; + // (undocumented) + iconUrl?: string; + // (undocumented) + id: number; + // (undocumented) + incidentCreation?: AlertSourceIncidentCreation; + // (undocumented) + incidentPriorityRule?: AlertSourceIncidentPriorityRule; + // (undocumented) + integrationKey?: string; + // (undocumented) + integrationType: AlertSourceIntegrationType; + // (undocumented) + lightIconUrl?: string; + // (undocumented) + name: string; + // (undocumented) + resolveFilterOperator?: AlertSourceFilterOperator; + // (undocumented) + status: AlertSourceStatus; + // (undocumented) + supportHours?: AlertSourceSupportHours; + // (undocumented) + teams: TeamShort[]; +} + +// @public (undocumented) +export interface AlertSourceAutotaskMetadata { + // (undocumented) + apiIntegrationCode: string; + // (undocumented) + secret: string; + // (undocumented) + userName: string; + // (undocumented) + webServer: string; +} + +// @public (undocumented) +export interface AlertSourceEmailPredicate { + // (undocumented) + criteria: + | 'CONTAINS_ANY_WORDS' + | 'CONTAINS_NOT_WORDS' + | 'CONTAINS_STRING' + | 'CONTAINS_NOT_STRING' + | 'IS_STRING' + | 'IS_NOT_STRING' + | 'MATCHES_REGEX' + | 'MATCHES_NOT_REGEX'; + // (undocumented) + field: 'EMAIL_FROM' | 'EMAIL_SUBJECT' | 'EMAIL_BODY'; + // (undocumented) + value: string; +} + +// @public (undocumented) +export type AlertSourceFilterOperator = 'AND' | 'OR'; + +// @public (undocumented) +export interface AlertSourceHeartbeat { + // (undocumented) + intervalSec: number; + // (undocumented) + status: 'OVERDUE' | 'ON_TIME' | 'NEVER_RECEIVED'; + // (undocumented) + summary: string; +} + +// @public (undocumented) +export type AlertSourceIncidentCreation = + | 'ONE_INCIDENT_PER_EMAIL' + | 'ONE_INCIDENT_PER_EMAIL_SUBJECT' + | 'ONE_PENDING_INCIDENT_ALLOWED' + | 'ONE_OPEN_INCIDENT_ALLOWED' + | 'OPEN_RESOLVE_ON_EXTRACTION'; + +// @public (undocumented) +export type AlertSourceIncidentPriorityRule = + | 'HIGH' + | 'LOW' + | 'HIGH_DURING_SUPPORT_HOURS' + | 'LOW_DURING_SUPPORT_HOURS'; + +// @public (undocumented) +export type AlertSourceIntegrationType = + | 'NAGIOS' + | 'ICINGA' + | 'EMAIL' + | 'SMS' + | 'API' + | 'CRN' + | 'HEARTBEAT' + | 'PRTG' + | 'PINGDOM' + | 'CLOUDWATCH' + | 'AWSPHD' + | 'STACKDRIVER' + | 'INSTANA' + | 'ZABBIX' + | 'SOLARWINDS' + | 'PROMETHEUS' + | 'NEWRELIC' + | 'GRAFANA' + | 'GITHUB' + | 'DATADOG' + | 'UPTIMEROBOT' + | 'APPDYNAMICS' + | 'DYNATRACE' + | 'TOPDESK' + | 'STATUSCAKE' + | 'MONITOR' + | 'TOOL' + | 'CHECKMK' + | 'AUTOTASK' + | 'AWSBUDGET' + | 'KENTIXAM' + | 'CONSUL' + | 'ZAMMAD' + | 'SIGNALFX' + | 'SPLUNK' + | 'KUBERNETES' + | 'SEMATEXT' + | 'SENTRY' + | 'SUMOLOGIC' + | 'RAYGUN' + | 'MXTOOLBOX' + | 'ESWATCHER' + | 'AMAZONSNS' + | 'KAPACITOR' + | 'CORTEXXSOAR' + | string; + +// @public (undocumented) +export type AlertSourceStatus = + | 'PENDING' + | 'ALL_ACCEPTED' + | 'ALL_RESOLVED' + | 'IN_MAINTENANCE' + | 'DISABLED'; + +// @public (undocumented) +export interface AlertSourceSupportDay { + // (undocumented) + end: string; + // (undocumented) + start: string; +} + +// @public (undocumented) +export interface AlertSourceSupportHours { + // (undocumented) + autoRaiseIncidents: boolean; + // (undocumented) + supportDays: { + MONDAY: AlertSourceSupportDay; + TUESDAY: AlertSourceSupportDay; + WEDNESDAY: AlertSourceSupportDay; + THURSDAY: AlertSourceSupportDay; + FRIDAY: AlertSourceSupportDay; + SATURDAY: AlertSourceSupportDay; + SUNDAY: AlertSourceSupportDay; + }; + // (undocumented) + timezone: AlertSourceTimeZone; +} + +// @public (undocumented) +export type AlertSourceTimeZone = + | 'Europe/Berlin' + | 'America/New_York' + | 'America/Los_Angeles' + | 'Asia/Istanbul'; + // @public (undocumented) export const EntityILertCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "GetIncidentsCountOpts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export interface EscalationPolicy { + // (undocumented) + escalationRules: EscalationRule[]; + // (undocumented) + frequency?: number; + // (undocumented) + id: number; + // (undocumented) + name: string; + // (undocumented) + newEscalationRule: EscalationRule; + // (undocumented) + repeating?: boolean; + // (undocumented) + teams: TeamShort[]; +} + +// @public (undocumented) +export interface EscalationRule { + // (undocumented) + escalationTimeout: number; + // (undocumented) + schedule: Schedule | null; + // (undocumented) + user: User | null; +} + +// @public (undocumented) +export type EventRequest = { + integrationKey: string; + summary: string; + details: string; + userName: string; + source: string; +}; + // @public (undocumented) export type GetIncidentsCountOpts = { states?: IncidentStatus[]; }; -// Warning: (ae-missing-release-tag) "GetIncidentsOpts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GetIncidentsOpts = { maxResults?: number; @@ -35,8 +267,6 @@ export type GetIncidentsOpts = { alertSources?: number[]; }; -// Warning: (ae-missing-release-tag) "ILertApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ILertApi { // (undocumented) @@ -51,8 +281,6 @@ export interface ILertApi { incident: Incident, responder: IncidentResponder, ): Promise; - // Warning: (ae-forgotten-export) The symbol "EventRequest" needs to be exported by the entry point index.d.ts - // // (undocumented) createIncident(eventRequest: EventRequest): Promise; // (undocumented) @@ -61,48 +289,30 @@ export interface ILertApi { enableAlertSource(alertSource: AlertSource): Promise; // (undocumented) fetchAlertSource(idOrIntegrationKey: number | string): Promise; - // Warning: (ae-forgotten-export) The symbol "OnCall" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchAlertSourceOnCalls(alertSource: AlertSource): Promise; - // Warning: (ae-forgotten-export) The symbol "AlertSource" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchAlertSources(): Promise; // (undocumented) fetchIncident(id: number): Promise; - // Warning: (ae-forgotten-export) The symbol "IncidentAction" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchIncidentActions(incident: Incident): Promise; - // Warning: (ae-forgotten-export) The symbol "IncidentResponder" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchIncidentResponders(incident: Incident): Promise; - // Warning: (ae-forgotten-export) The symbol "Incident" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchIncidents(opts?: GetIncidentsOpts): Promise; // (undocumented) fetchIncidentsCount(opts?: GetIncidentsCountOpts): Promise; - // Warning: (ae-forgotten-export) The symbol "Schedule" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchOnCallSchedules(): Promise; // (undocumented) fetchUptimeMonitor(id: number): Promise; - // Warning: (ae-forgotten-export) The symbol "UptimeMonitor" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchUptimeMonitors(): Promise; - // Warning: (ae-forgotten-export) The symbol "User" needs to be exported by the entry point index.d.ts - // // (undocumented) fetchUsers(): Promise; // (undocumented) getAlertSourceDetailsURL(alertSource: AlertSource | null): string; - // Warning: (ae-forgotten-export) The symbol "EscalationPolicy" needs to be exported by the entry point index.d.ts - // // (undocumented) getEscalationPolicyDetailsURL(escalationPolicy: EscalationPolicy): string; // (undocumented) @@ -135,22 +345,19 @@ export interface ILertApi { ): Promise; } -// Warning: (ae-missing-release-tag) "ilertApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ilertApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "ILertCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ILertCard: () => JSX.Element; -// Warning: (ae-missing-release-tag) "ILertClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class ILertClient implements ILertApi { - // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts - constructor(opts: Options); + constructor(opts: { + discoveryApi: DiscoveryApi; + baseUrl: string; + proxyPath: string; + }); // (undocumented) acceptIncident(incident: Incident, userName: string): Promise; // (undocumented) @@ -232,18 +439,12 @@ export class ILertClient implements ILertApi { ): Promise; } -// Warning: (ae-missing-release-tag) "ILertIcon" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ILertIcon: IconComponent; -// Warning: (ae-missing-release-tag) "ILertPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const ILertPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "ilertPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const ilertPlugin: BackstagePlugin< { @@ -255,34 +456,319 @@ const ilertPlugin: BackstagePlugin< export { ilertPlugin }; export { ilertPlugin as plugin }; -// Warning: (ae-missing-release-tag) "iLertRouteRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const iLertRouteRef: RouteRef; -// Warning: (ae-missing-release-tag) "isPluginApplicableToEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +interface Image_2 { + // (undocumented) + alt: string; + // (undocumented) + href: string; + // (undocumented) + src: string; +} +export { Image_2 as Image }; + +// @public (undocumented) +export interface Incident { + // (undocumented) + alertSource: AlertSource | null; + // (undocumented) + assignedTo: User | null; + // (undocumented) + commentPublishToSubscribers: boolean; + // (undocumented) + commentText: string; + // (undocumented) + details: string; + // (undocumented) + id: number; + // (undocumented) + images: Image_2[]; + // (undocumented) + incidentKey: string; + // (undocumented) + links: Link[]; + // (undocumented) + logEntries: LogEntry[]; + // (undocumented) + priority: IncidentPriority; + // (undocumented) + reportTime: string; + // (undocumented) + resolvedOn: string; + // (undocumented) + status: IncidentStatus; + // (undocumented) + subscribers: Subscriber[]; + // (undocumented) + summary: string; +} + +// @public (undocumented) +export interface IncidentAction { + // (undocumented) + extensionId?: string; + // (undocumented) + history?: IncidentActionHistory[]; + // (undocumented) + name: string; + // (undocumented) + type: string; + // (undocumented) + webhookId: string; +} + +// @public (undocumented) +export interface IncidentActionHistory { + // (undocumented) + actor: User; + // (undocumented) + id: string; + // (undocumented) + incidentId: number; + // (undocumented) + success: boolean; + // (undocumented) + webhookId: string; +} + +// @public (undocumented) +export type IncidentPriority = 'HIGH' | 'LOW'; + +// @public (undocumented) +export interface IncidentResponder { + // (undocumented) + disabled: boolean; + // (undocumented) + group: 'SUGGESTED' | 'USER' | 'ESCALATION_POLICY' | 'ON_CALL_SCHEDULE'; + // (undocumented) + id: number; + // (undocumented) + name: string; +} + +// @public (undocumented) +export type IncidentStatus = typeof PENDING | typeof ACCEPTED | typeof RESOLVED; + // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; export { isPluginApplicableToEntity as isILertAvailable }; export { isPluginApplicableToEntity }; -// Warning: (ae-missing-release-tag) "ILertPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type Language = 'de' | 'en'; + +// @public (undocumented) +export interface Link { + // (undocumented) + href: string; + // (undocumented) + text: string; +} + +// @public (undocumented) +export interface LogEntry { + // (undocumented) + filterTypes?: string[]; + // (undocumented) + iconClass?: string; + // (undocumented) + iconName?: string; + // (undocumented) + id: number; + // (undocumented) + incidentId?: number; + // (undocumented) + logEntryType: string; + // (undocumented) + text: string; + // (undocumented) + timestamp: string; +} + +// @public (undocumented) +export interface OnCall { + // (undocumented) + end: string; + // (undocumented) + escalationLevel: number; + // (undocumented) + escalationPolicy: EscalationPolicy; + // (undocumented) + schedule?: Schedule; + // (undocumented) + start: string; + // (undocumented) + user: User; +} + +// @public (undocumented) +export const PENDING = 'PENDING'; + +// @public (undocumented) +export interface Phone { + // (undocumented) + number: string; + // (undocumented) + regionCode: string; +} + +// @public (undocumented) +export const RESOLVED = 'RESOLVED'; + // @public (undocumented) export const Router: () => JSX.Element; -// Warning: (ae-missing-release-tag) "TableState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export interface Schedule { + // (undocumented) + currentShift: Shift; + // (undocumented) + id: number; + // (undocumented) + name: string; + // (undocumented) + nextShift: Shift; + // (undocumented) + overrides: Shift[]; + // (undocumented) + shifts: Shift[]; + // (undocumented) + startsOn: string; + // (undocumented) + teams: TeamShort[]; + // (undocumented) + timezone: string; +} + +// @public (undocumented) +export interface Shift { + // (undocumented) + end: string; + // (undocumented) + start: string; + // (undocumented) + user: User; +} + +// @public (undocumented) +export interface Subscriber { + // (undocumented) + id: number; + // (undocumented) + name: string; + // (undocumented) + type: SubscriberType; +} + +// @public (undocumented) +export type SubscriberType = 'TEAM' | 'USER'; + // @public (undocumented) export type TableState = { page: number; pageSize: number; }; -// Warnings were encountered during analysis: -// -// src/api/types.d.ts:14:5 - (ae-forgotten-export) The symbol "IncidentStatus" needs to be exported by the entry point index.d.ts +// @public (undocumented) +export interface TeamMember { + // (undocumented) + role: 'STAKEHOLDER' | 'RESPONDER' | 'USER' | 'ADMIN'; + // (undocumented) + user: User; +} + +// @public (undocumented) +export interface TeamShort { + // (undocumented) + id: number; + // (undocumented) + name: string; +} + +// @public (undocumented) +export interface UptimeMonitor { + // (undocumented) + checkParams: UptimeMonitorCheckParams; + // (undocumented) + checkType: 'http' | 'tcp' | 'udp' | 'ping'; + // (undocumented) + createIncidentAfterFailedChecks: number; + // (undocumented) + embedUrl: string; + // (undocumented) + escalationPolicy: EscalationPolicy; + // (undocumented) + id: number; + // (undocumented) + intervalSec: number; + // (undocumented) + lastStatusChange: string; + // (undocumented) + name: string; + // (undocumented) + paused: boolean; + // (undocumented) + region: 'EU' | 'US'; + // (undocumented) + shareUrl: string; + // (undocumented) + status: string; + // (undocumented) + teams: TeamShort[]; + // (undocumented) + timeoutMs: number; +} + +// @public (undocumented) +export interface UptimeMonitorCheckParams { + // (undocumented) + host?: string; + // (undocumented) + port?: number; + // (undocumented) + url?: string; +} + +// @public (undocumented) +export interface User { + // (undocumented) + department: string; + // (undocumented) + email: string; + // (undocumented) + firstName: string; + // (undocumented) + id: number; + // (undocumented) + landline: Phone; + // (undocumented) + language?: Language; + // (undocumented) + lastName: string; + // (undocumented) + mobile: Phone; + // (undocumented) + notificationPreferences?: any[]; + // (undocumented) + position: string; + // (undocumented) + role?: UserRole; + // (undocumented) + timezone?: string; + // (undocumented) + username: string; +} + +// @public (undocumented) +export type UserRole = + | 'USER' + | 'ADMIN' + | 'STAKEHOLDER' + | 'ACCOUNT_OWNER' + | 'RESPONDER'; // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/ilert/src/api/client.ts b/plugins/ilert/src/api/client.ts index 13de8c1f2c..7ab9a6d08c 100644 --- a/plugins/ilert/src/api/client.ts +++ b/plugins/ilert/src/api/client.ts @@ -29,7 +29,6 @@ import { ILertApi, GetIncidentsOpts, GetIncidentsCountOpts, - Options, EventRequest, } from './types'; import { DateTime as dt } from 'luxon'; @@ -39,6 +38,7 @@ import { DiscoveryApi, } from '@backstage/core-plugin-api'; +/** @public */ export const ilertApiRef = createApiRef({ id: 'plugin.ilert.service', }); @@ -49,6 +49,7 @@ const JSON_HEADERS = { Accept: 'application/json', }; +/** @public */ export class ILertClient implements ILertApi { private readonly discoveryApi: DiscoveryApi; private readonly proxyPath: string; @@ -66,7 +67,20 @@ export class ILertClient implements ILertApi { }); } - constructor(opts: Options) { + constructor(opts: { + discoveryApi: DiscoveryApi; + + /** + * URL used by users to access iLert web UI. + * Example: https://my-org.ilert.com/ + */ + baseUrl: string; + + /** + * Path to use for requests via the proxy, defaults to /ilert/api + */ + proxyPath: string; + }) { this.discoveryApi = opts.discoveryApi; this.baseUrl = opts.baseUrl; this.proxyPath = opts.proxyPath; diff --git a/plugins/ilert/src/api/index.ts b/plugins/ilert/src/api/index.ts index 02ee9706f7..e1163090ec 100644 --- a/plugins/ilert/src/api/index.ts +++ b/plugins/ilert/src/api/index.ts @@ -17,6 +17,7 @@ export { ILertClient, ilertApiRef } from './client'; export type { ILertApi, + EventRequest, GetIncidentsCountOpts, GetIncidentsOpts, TableState, diff --git a/plugins/ilert/src/api/types.ts b/plugins/ilert/src/api/types.ts index 3a085bdb5b..2e9ea30f2f 100644 --- a/plugins/ilert/src/api/types.ts +++ b/plugins/ilert/src/api/types.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { AlertSource, Incident, @@ -25,13 +26,14 @@ import { IncidentAction, OnCall, } from '../types'; -import { DiscoveryApi } from '@backstage/core-plugin-api'; +/** @public */ export type TableState = { page: number; pageSize: number; }; +/** @public */ export type GetIncidentsOpts = { maxResults?: number; startIndex?: number; @@ -39,10 +41,12 @@ export type GetIncidentsOpts = { alertSources?: number[]; }; +/** @public */ export type GetIncidentsCountOpts = { states?: IncidentStatus[]; }; +/** @public */ export type EventRequest = { integrationKey: string; summary: string; @@ -51,6 +55,7 @@ export type EventRequest = { source: string; }; +/** @public */ export interface ILertApi { fetchIncidents(opts?: GetIncidentsOpts): Promise; fetchIncidentsCount(opts?: GetIncidentsCountOpts): Promise; @@ -103,18 +108,3 @@ export interface ILertApi { getUserPhoneNumber(user: User | null): string; getUserInitials(user: User | null): string; } - -export type Options = { - discoveryApi: DiscoveryApi; - - /** - * URL used by users to access iLert web UI. - * Example: https://my-org.ilert.com/ - */ - baseUrl: string; - - /** - * Path to use for requests via the proxy, defaults to /ilert/api - */ - proxyPath: string; -}; diff --git a/plugins/ilert/src/components/ILertCard/ILertCard.tsx b/plugins/ilert/src/components/ILertCard/ILertCard.tsx index a014c265c2..6330189a01 100644 --- a/plugins/ilert/src/components/ILertCard/ILertCard.tsx +++ b/plugins/ilert/src/components/ILertCard/ILertCard.tsx @@ -35,6 +35,7 @@ import { ILertCardEmptyState } from './ILertCardEmptyState'; import { ILertCardOnCall } from './ILertCardOnCall'; import { ResponseErrorPanel } from '@backstage/core-components'; +/** @public */ export const isPluginApplicableToEntity = (entity: Entity) => Boolean(entity.metadata.annotations?.[ILERT_INTEGRATION_KEY_ANNOTATION]); @@ -50,6 +51,7 @@ const useStyles = makeStyles({ }, }); +/** @public */ export const ILertCard = () => { const classes = useStyles(); const { integrationKey, name } = useILertEntity(); diff --git a/plugins/ilert/src/components/ILertPage/ILertPage.tsx b/plugins/ilert/src/components/ILertPage/ILertPage.tsx index c532cd7f64..89dae215e4 100644 --- a/plugins/ilert/src/components/ILertPage/ILertPage.tsx +++ b/plugins/ilert/src/components/ILertPage/ILertPage.tsx @@ -25,6 +25,7 @@ import { Content, } from '@backstage/core-components'; +/** @public */ export const ILertPage = () => { const [selectedTab, setSelectedTab] = React.useState(0); const tabs = [ diff --git a/plugins/ilert/src/index.ts b/plugins/ilert/src/index.ts index 9a3119516f..5fcf42011b 100644 --- a/plugins/ilert/src/index.ts +++ b/plugins/ilert/src/index.ts @@ -37,4 +37,7 @@ export { } from './components'; export * from './api'; export * from './route-refs'; +export * from './types'; + +/** @public */ export const ILertIcon: IconComponent = ILertIconComponent as IconComponent; diff --git a/plugins/ilert/src/plugin.ts b/plugins/ilert/src/plugin.ts index 89df59b0b6..96e57e6f48 100644 --- a/plugins/ilert/src/plugin.ts +++ b/plugins/ilert/src/plugin.ts @@ -25,6 +25,7 @@ import { createComponentExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const ilertPlugin = createPlugin({ id: 'ilert', apis: [ @@ -44,6 +45,7 @@ export const ilertPlugin = createPlugin({ }, }); +/** @public */ export const ILertPage = ilertPlugin.provide( createRoutableExtension({ name: 'ILertPage', @@ -52,6 +54,7 @@ export const ILertPage = ilertPlugin.provide( }), ); +/** @public */ export const EntityILertCard = ilertPlugin.provide( createComponentExtension({ name: 'EntityILertCard', diff --git a/plugins/ilert/src/route-refs.tsx b/plugins/ilert/src/route-refs.tsx index 8a3d53001d..fd61bd2bbd 100644 --- a/plugins/ilert/src/route-refs.tsx +++ b/plugins/ilert/src/route-refs.tsx @@ -16,6 +16,7 @@ import { createRouteRef } from '@backstage/core-plugin-api'; +/** @public */ export const iLertRouteRef = createRouteRef({ id: 'ilert', }); diff --git a/plugins/ilert/src/types.ts b/plugins/ilert/src/types.ts index c3e863c6a6..3d1531329a 100644 --- a/plugins/ilert/src/types.ts +++ b/plugins/ilert/src/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export interface Incident { id: number; summary: string; @@ -33,31 +34,43 @@ export interface Incident { commentPublishToSubscribers: boolean; } +/** @public */ export const PENDING = 'PENDING'; +/** @public */ export const ACCEPTED = 'ACCEPTED'; +/** @public */ export const RESOLVED = 'RESOLVED'; + +/** @public */ export type IncidentStatus = typeof PENDING | typeof ACCEPTED | typeof RESOLVED; + +/** @public */ export type IncidentPriority = 'HIGH' | 'LOW'; +/** @public */ export interface Link { href: string; text: string; } +/** @public */ export interface Image { src: string; href: string; alt: string; } +/** @public */ export type SubscriberType = 'TEAM' | 'USER'; +/** @public */ export interface Subscriber { id: number; name: string; type: SubscriberType; } +/** @public */ export interface LogEntry { id: number; timestamp: string; @@ -69,6 +82,7 @@ export interface LogEntry { filterTypes?: string[]; } +/** @public */ export interface User { id: number; username: string; @@ -85,18 +99,22 @@ export interface User { department: string; } +/** @public */ export type UserRole = | 'USER' | 'ADMIN' | 'STAKEHOLDER' | 'ACCOUNT_OWNER' | 'RESPONDER'; +/** @public */ export type Language = 'de' | 'en'; +/** @public */ export interface Phone { regionCode: string; number: string; } +/** @public */ export interface AlertSource { id: number; name: string; @@ -123,22 +141,26 @@ export interface AlertSource { teams: TeamShort[]; } +/** @public */ export interface TeamShort { id: number; name: string; } +/** @public */ export interface TeamMember { user: User; role: 'STAKEHOLDER' | 'RESPONDER' | 'USER' | 'ADMIN'; } +/** @public */ export type AlertSourceStatus = | 'PENDING' | 'ALL_ACCEPTED' | 'ALL_RESOLVED' | 'IN_MAINTENANCE' | 'DISABLED'; +/** @public */ export type AlertSourceIntegrationType = | 'NAGIOS' | 'ICINGA' @@ -186,18 +208,22 @@ export type AlertSourceIntegrationType = | 'KAPACITOR' | 'CORTEXXSOAR' | string; +/** @public */ export type AlertSourceIncidentCreation = | 'ONE_INCIDENT_PER_EMAIL' | 'ONE_INCIDENT_PER_EMAIL_SUBJECT' | 'ONE_PENDING_INCIDENT_ALLOWED' | 'ONE_OPEN_INCIDENT_ALLOWED' | 'OPEN_RESOLVE_ON_EXTRACTION'; +/** @public */ export type AlertSourceFilterOperator = 'AND' | 'OR'; +/** @public */ export type AlertSourceIncidentPriorityRule = | 'HIGH' | 'LOW' | 'HIGH_DURING_SUPPORT_HOURS' | 'LOW_DURING_SUPPORT_HOURS'; +/** @public */ export interface AlertSourceEmailPredicate { field: 'EMAIL_FROM' | 'EMAIL_SUBJECT' | 'EMAIL_BODY'; criteria: @@ -211,15 +237,18 @@ export interface AlertSourceEmailPredicate { | 'MATCHES_NOT_REGEX'; value: string; } +/** @public */ export type AlertSourceTimeZone = | 'Europe/Berlin' | 'America/New_York' | 'America/Los_Angeles' | 'Asia/Istanbul'; +/** @public */ export interface AlertSourceSupportDay { start: string; end: string; } +/** @public */ export interface AlertSourceSupportHours { timezone: AlertSourceTimeZone; autoRaiseIncidents: boolean; @@ -233,12 +262,14 @@ export interface AlertSourceSupportHours { SUNDAY: AlertSourceSupportDay; }; } +/** @public */ export interface AlertSourceHeartbeat { summary: string; intervalSec: number; status: 'OVERDUE' | 'ON_TIME' | 'NEVER_RECEIVED'; } +/** @public */ export interface AlertSourceAutotaskMetadata { userName: string; secret: string; @@ -246,6 +277,7 @@ export interface AlertSourceAutotaskMetadata { webServer: string; } +/** @public */ export interface EscalationPolicy { id: number; name: string; @@ -256,12 +288,14 @@ export interface EscalationPolicy { teams: TeamShort[]; } +/** @public */ export interface EscalationRule { user: User | null; schedule: Schedule | null; escalationTimeout: number; } +/** @public */ export interface Schedule { id: number; name: string; @@ -274,12 +308,14 @@ export interface Schedule { teams: TeamShort[]; } +/** @public */ export interface Shift { user: User; start: string; end: string; } +/** @public */ export interface UptimeMonitor { id: number; name: string; @@ -298,12 +334,14 @@ export interface UptimeMonitor { teams: TeamShort[]; } +/** @public */ export interface UptimeMonitorCheckParams { host?: string; port?: number; url?: string; } +/** @public */ export interface IncidentResponder { group: 'SUGGESTED' | 'USER' | 'ESCALATION_POLICY' | 'ON_CALL_SCHEDULE'; id: number; @@ -311,6 +349,7 @@ export interface IncidentResponder { disabled: boolean; } +/** @public */ export interface IncidentAction { name: string; type: string; @@ -319,6 +358,7 @@ export interface IncidentAction { history?: IncidentActionHistory[]; } +/** @public */ export interface IncidentActionHistory { id: string; webhookId: string; @@ -327,6 +367,7 @@ export interface IncidentActionHistory { success: boolean; } +/** @public */ export interface OnCall { user: User; escalationPolicy: EscalationPolicy; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 18031e5486..383a1848a5 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -212,7 +212,6 @@ const ALLOW_WARNINGS = [ 'plugins/github-pull-requests-board', 'plugins/gitops-profiles', 'plugins/graphql-backend', - 'plugins/ilert', 'plugins/jenkins', 'plugins/jenkins-backend', 'plugins/kubernetes', From f918d327a974b84d14a0ddcced6e6a09fee5e2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:42:13 +0200 Subject: [PATCH 172/275] cicd-statistics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/cicd-statistics/api-report.md | 46 +------------------ .../src/apis/cicd-statistics.ts | 2 +- plugins/cicd-statistics/src/apis/types.ts | 44 ++++++++++++++++++ plugins/cicd-statistics/src/entity-page.tsx | 1 + plugins/cicd-statistics/src/plugin.ts | 2 + scripts/api-extractor.ts | 1 - 6 files changed, 49 insertions(+), 47 deletions(-) diff --git a/plugins/cicd-statistics/api-report.md b/plugins/cicd-statistics/api-report.md index e49c6b27dc..b0966aa281 100644 --- a/plugins/cicd-statistics/api-report.md +++ b/plugins/cicd-statistics/api-report.md @@ -10,13 +10,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "AbortError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class AbortError extends Error {} -// Warning: (ae-missing-release-tag) "Build" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface Build { branchType: FilterBranchType; @@ -30,25 +26,17 @@ export interface Build { triggeredBy?: TriggerReason; } -// Warning: (ae-missing-release-tag) "BuildWithRaw" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type BuildWithRaw = Build & { raw: T; }; -// Warning: (ae-missing-release-tag) "ChartType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type ChartType = 'duration' | 'count'; -// Warning: (ae-missing-release-tag) "ChartTypes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export type ChartTypes = Array; -// Warning: (ae-missing-release-tag) "CicdConfiguration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface CicdConfiguration { availableStatuses: ReadonlyArray; @@ -56,8 +44,6 @@ export interface CicdConfiguration { formatStageName: (parentNames: Array, stageName: string) => string; } -// Warning: (ae-missing-release-tag) "CicdDefaults" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface CicdDefaults { chartTypes: Record; @@ -75,16 +61,12 @@ export interface CicdDefaults { timeTo: Date; } -// Warning: (ae-missing-release-tag) "CicdState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface CicdState { // (undocumented) builds: Array; } -// Warning: (ae-missing-release-tag) "CicdStatisticsApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface CicdStatisticsApi { // (undocumented) @@ -95,13 +77,9 @@ export interface CicdStatisticsApi { ): Promise>; } -// Warning: (ae-missing-release-tag) "cicdStatisticsApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const cicdStatisticsApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "cicdStatisticsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const cicdStatisticsPlugin: BackstagePlugin< { @@ -111,18 +89,12 @@ export const cicdStatisticsPlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "EntityCicdStatisticsContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityCicdStatisticsContent: EntityPageCicdCharts; -// Warning: (ae-missing-release-tag) "EntityPageCicdCharts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function EntityPageCicdCharts(): JSX.Element; -// Warning: (ae-missing-release-tag) "FetchBuildsOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface FetchBuildsOptions { // (undocumented) @@ -141,13 +113,9 @@ export interface FetchBuildsOptions { updateProgress: UpdateProgress; } -// Warning: (ae-missing-release-tag) "FilterBranchType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type FilterBranchType = 'master' | 'branch'; -// Warning: (ae-missing-release-tag) "FilterStatusType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type FilterStatusType = | 'unknown' @@ -160,16 +128,12 @@ export type FilterStatusType = | 'stalled' | 'expired'; -// Warning: (ae-missing-release-tag) "GetConfigurationOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface GetConfigurationOptions { // (undocumented) entity: Entity; } -// Warning: (ae-missing-release-tag) "Stage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface Stage { duration: number; @@ -179,13 +143,9 @@ export interface Stage { status: FilterStatusType; } -// Warning: (ae-missing-release-tag) "statusTypes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const statusTypes: Array; -// Warning: (ae-missing-release-tag) "TriggerReason" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type TriggerReason = /** Triggered by source code management, e.g. a Github hook */ @@ -197,13 +157,9 @@ export type TriggerReason = /** Triggered for some other reason */ | 'other'; -// Warning: (ae-missing-release-tag) "triggerReasons" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const triggerReasons: Array; -// Warning: (ae-missing-release-tag) "UpdateProgress" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface UpdateProgress { // (undocumented) diff --git a/plugins/cicd-statistics/src/apis/cicd-statistics.ts b/plugins/cicd-statistics/src/apis/cicd-statistics.ts index 714900a1bd..3ece331ec9 100644 --- a/plugins/cicd-statistics/src/apis/cicd-statistics.ts +++ b/plugins/cicd-statistics/src/apis/cicd-statistics.ts @@ -15,9 +15,9 @@ */ import { createApiRef } from '@backstage/core-plugin-api'; - import { CicdStatisticsApi } from './types'; +/** @public */ export const cicdStatisticsApiRef = createApiRef({ id: 'cicd-statistics-api', }); diff --git a/plugins/cicd-statistics/src/apis/types.ts b/plugins/cicd-statistics/src/apis/types.ts index 32d9d3f2df..226fa3f55d 100644 --- a/plugins/cicd-statistics/src/apis/types.ts +++ b/plugins/cicd-statistics/src/apis/types.ts @@ -21,6 +21,8 @@ import { Entity } from '@backstage/catalog-model'; * * If all of these aren't applicable to the underlying CI/CD, these can be * configured to be hidden, using the `availableStatuses` in `CicdConfiguration`. + * + * @public */ export type FilterStatusType = | 'unknown' @@ -32,6 +34,10 @@ export type FilterStatusType = | 'failed' | 'stalled' | 'expired'; + +/** + * @public + */ export const statusTypes: Array = [ 'succeeded', 'failed', @@ -50,9 +56,14 @@ export const statusTypes: Array = [ * The concept of what constitutes a master branch is generic. It might be called * something like 'release' or 'main' or 'trunk' in the underlying CI/CD system, * which is then up to the Api to map accordingly. + * + * @public */ export type FilterBranchType = 'master' | 'branch'; +/** + * @public + */ export type TriggerReason = /** Triggered by source code management, e.g. a Github hook */ | 'scm' @@ -63,6 +74,9 @@ export type TriggerReason = /** Triggered for some other reason */ | 'other'; +/** + * @public + */ export const triggerReasons: Array = [ 'scm', 'manual', @@ -76,6 +90,8 @@ export const triggerReasons: Array = [ * This may be called things like Stage or Step or Task in CI/CD systems, but is * generic here. There's also no concept of parallelism which might exist within * some stages. + * + * @public */ export interface Stage { name: string; @@ -94,6 +110,8 @@ export interface Stage { * Generic Build type. * * A build has e.g. a build type (master/branch), a status and (possibly) sub stages. + * + * @public */ export interface Build { raw?: unknown; @@ -125,6 +143,8 @@ export interface Build { * * This can be useful in an Api to use while mapping internal data structures * (raw) into generic builds. + * + * @public */ export type BuildWithRaw = Build & { raw: T; @@ -136,8 +156,16 @@ export type BuildWithRaw = Build & { * Values are: * * `duration`: shows an area chart of the duration over time * * `count`: shows a bar chart of the number of build per day + * + * @public */ export type ChartType = 'duration' | 'count'; + +/** + * Chart types. + * + * @public + */ export type ChartTypes = Array; /** @@ -145,6 +173,8 @@ export type ChartTypes = Array; * * These are all optional, but can be overridden from the Api to whatever makes * most sense for that implementation. + * + * @public */ export interface CicdDefaults { timeFrom: Date; @@ -171,6 +201,8 @@ export interface CicdDefaults { * configuration before anything else. * * All of these fields are optional though, and will fallback to hard-coded defaults. + * + * @public */ export interface CicdConfiguration { /** @@ -200,11 +232,15 @@ export interface CicdConfiguration { /** * If the Api implements support for aborting the fetching of builds, throw an * AbortError of this type (or any other error with name === 'AbortError'). + * + * @public */ export class AbortError extends Error {} /** * The result type for `fetchBuilds`. + * + * @public */ export interface CicdState { builds: Array; @@ -222,6 +258,8 @@ export interface CicdState { * the UI. * * Optionally this can signal multiple progresses in several steps + * + * @public */ export interface UpdateProgress { (completed: number, total: number, started?: number): void; @@ -238,6 +276,8 @@ export interface UpdateProgress { /** * When reading configuration, the Api can return a custom settings depending on * the entity being viewed. + * + * @public */ export interface GetConfigurationOptions { entity: Entity; @@ -252,6 +292,8 @@ export interface GetConfigurationOptions { * * When the UI re-fetches, it will abort any previous fetching, so polling * `abortSignal.aborted`, and possibly throwing an `AbortError`, can be useful. + * + * @public */ export interface FetchBuildsOptions { entity: Entity; @@ -266,6 +308,8 @@ export interface FetchBuildsOptions { /** * The interface which is mapped to the `cicdStatisticsApiRef` which is used by * the UI. + * + * @public */ export interface CicdStatisticsApi { getConfiguration( diff --git a/plugins/cicd-statistics/src/entity-page.tsx b/plugins/cicd-statistics/src/entity-page.tsx index 3c51dabf2a..db5cba42aa 100644 --- a/plugins/cicd-statistics/src/entity-page.tsx +++ b/plugins/cicd-statistics/src/entity-page.tsx @@ -46,6 +46,7 @@ import { cleanupBuildTree } from './utils/stage-names'; import { renderFallbacks, useAsyncChain } from './components/progress'; import { sortFilterStatusType } from './utils/api'; +/** @public */ export function EntityPageCicdCharts() { const state = useCicdConfiguration(); diff --git a/plugins/cicd-statistics/src/plugin.ts b/plugins/cicd-statistics/src/plugin.ts index ca9506475a..2abac90d03 100644 --- a/plugins/cicd-statistics/src/plugin.ts +++ b/plugins/cicd-statistics/src/plugin.ts @@ -26,6 +26,7 @@ const rootCatalogCicdStatsRouteRef = createRouteRef({ id: 'cicd-statistics', }); +/** @public */ export const cicdStatisticsPlugin = createPlugin({ id: 'cicd-statistics', routes: { @@ -33,6 +34,7 @@ export const cicdStatisticsPlugin = createPlugin({ }, }); +/** @public */ export const EntityCicdStatisticsContent = cicdStatisticsPlugin.provide( createRoutableExtension({ component: () => import('./entity-page').then(m => m.EntityPageCicdCharts), diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 383a1848a5..007c93b146 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -201,7 +201,6 @@ const ALLOW_WARNINGS = [ 'packages/core-components', 'plugins/catalog', 'plugins/catalog-import', - 'plugins/cicd-statistics', 'plugins/circleci', 'plugins/cost-insights', 'plugins/dynatrace', From 9d322594ac02a2e6a1f3cd07e9337531d130a6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:43:32 +0200 Subject: [PATCH 173/275] explore-react MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/explore-react/api-report.md | 6 ------ plugins/explore-react/src/tools/api.ts | 3 +++ scripts/api-extractor.ts | 1 - 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/plugins/explore-react/api-report.md b/plugins/explore-react/api-report.md index 75fb01064d..8a9d2b8b13 100644 --- a/plugins/explore-react/api-report.md +++ b/plugins/explore-react/api-report.md @@ -5,8 +5,6 @@ ```ts import { ApiRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "ExploreTool" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type ExploreTool = { title: string; @@ -17,16 +15,12 @@ export type ExploreTool = { lifecycle?: string; }; -// Warning: (ae-missing-release-tag) "ExploreToolsConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ExploreToolsConfig { // (undocumented) getTools: () => Promise; } -// Warning: (ae-missing-release-tag) "exploreToolsConfigRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const exploreToolsConfigRef: ApiRef; ``` diff --git a/plugins/explore-react/src/tools/api.ts b/plugins/explore-react/src/tools/api.ts index 8a91b84785..0fae2ce0fb 100644 --- a/plugins/explore-react/src/tools/api.ts +++ b/plugins/explore-react/src/tools/api.ts @@ -16,10 +16,12 @@ import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const exploreToolsConfigRef = createApiRef({ id: 'plugin.explore.toolsconfig', }); +/** @public */ export type ExploreTool = { title: string; description?: string; @@ -29,6 +31,7 @@ export type ExploreTool = { lifecycle?: string; }; +/** @public */ export interface ExploreToolsConfig { getTools: () => Promise; } diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 007c93b146..dc05f00b84 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -204,7 +204,6 @@ const ALLOW_WARNINGS = [ 'plugins/circleci', 'plugins/cost-insights', 'plugins/dynatrace', - 'plugins/explore-react', 'plugins/git-release-manager', 'plugins/github-actions', 'plugins/github-deployments', From 12d29b72ebafd6b41d16a73a373d90dd609ed076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:44:58 +0200 Subject: [PATCH 174/275] graphql-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/graphql-backend/api-report.md | 4 ---- plugins/graphql-backend/src/service/router.ts | 2 ++ scripts/api-extractor.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/graphql-backend/api-report.md b/plugins/graphql-backend/api-report.md index f1707288b7..a787c4f209 100644 --- a/plugins/graphql-backend/api-report.md +++ b/plugins/graphql-backend/api-report.md @@ -7,13 +7,9 @@ import { Config } from '@backstage/config'; import express from 'express'; import { Logger } from 'winston'; -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/graphql-backend/src/service/router.ts b/plugins/graphql-backend/src/service/router.ts index 22d284eb27..773eebd608 100644 --- a/plugins/graphql-backend/src/service/router.ts +++ b/plugins/graphql-backend/src/service/router.ts @@ -25,11 +25,13 @@ import { Config } from '@backstage/config'; import helmet from 'helmet'; import { makeExecutableSchema } from '@graphql-tools/schema'; +/** @public */ export interface RouterOptions { logger: Logger; config: Config; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index dc05f00b84..3cd7ad57d0 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -209,7 +209,6 @@ const ALLOW_WARNINGS = [ 'plugins/github-deployments', 'plugins/github-pull-requests-board', 'plugins/gitops-profiles', - 'plugins/graphql-backend', 'plugins/jenkins', 'plugins/jenkins-backend', 'plugins/kubernetes', From 9d85eaf58ad54988f192ac121d9a2294967ebb80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:46:34 +0200 Subject: [PATCH 175/275] gitops-profiles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/gitops-profiles/api-report.md | 38 --------------------------- plugins/gitops-profiles/src/api.ts | 16 +++++++++++ plugins/gitops-profiles/src/plugin.ts | 4 +++ scripts/api-extractor.ts | 1 - 4 files changed, 20 insertions(+), 39 deletions(-) diff --git a/plugins/gitops-profiles/api-report.md b/plugins/gitops-profiles/api-report.md index 245a1fb30b..9449417bba 100644 --- a/plugins/gitops-profiles/api-report.md +++ b/plugins/gitops-profiles/api-report.md @@ -9,8 +9,6 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "ApplyProfileRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ApplyProfileRequest { // (undocumented) @@ -25,8 +23,6 @@ export interface ApplyProfileRequest { targetRepo: string; } -// Warning: (ae-missing-release-tag) "ChangeClusterStateRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ChangeClusterStateRequest { // (undocumented) @@ -41,8 +37,6 @@ export interface ChangeClusterStateRequest { targetRepo: string; } -// Warning: (ae-missing-release-tag) "CloneFromTemplateRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CloneFromTemplateRequest { // (undocumented) @@ -62,8 +56,6 @@ export interface CloneFromTemplateRequest { templateRepository: string; } -// Warning: (ae-missing-release-tag) "ClusterStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ClusterStatus { // (undocumented) @@ -78,8 +70,6 @@ export interface ClusterStatus { status: string; } -// Warning: (ae-missing-release-tag) "FetchError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class FetchError extends Error { // (undocumented) @@ -88,24 +78,18 @@ export class FetchError extends Error { get name(): string; } -// Warning: (ae-missing-release-tag) "GithubUserInfoRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface GithubUserInfoRequest { // (undocumented) accessToken: string; } -// Warning: (ae-missing-release-tag) "GithubUserInfoResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface GithubUserInfoResponse { // (undocumented) login: string; } -// Warning: (ae-missing-release-tag) "GitOpsApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type GitOpsApi = { url: string; @@ -117,28 +101,18 @@ export type GitOpsApi = { fetchUserInfo(req: GithubUserInfoRequest): Promise; }; -// Warning: (ae-missing-release-tag) "gitOpsApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const gitOpsApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "GitopsProfilesClusterListPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const GitopsProfilesClusterListPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "GitopsProfilesClusterPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const GitopsProfilesClusterPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "GitopsProfilesCreatePage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const GitopsProfilesCreatePage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "gitopsProfilesPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const gitopsProfilesPlugin: BackstagePlugin< { @@ -155,8 +129,6 @@ const gitopsProfilesPlugin: BackstagePlugin< export { gitopsProfilesPlugin }; export { gitopsProfilesPlugin as plugin }; -// Warning: (ae-missing-release-tag) "GitOpsRestApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class GitOpsRestApi implements GitOpsApi { constructor(url?: string); @@ -176,8 +148,6 @@ export class GitOpsRestApi implements GitOpsApi { url: string; } -// Warning: (ae-missing-release-tag) "ListClusterRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ListClusterRequest { // (undocumented) @@ -186,16 +156,12 @@ export interface ListClusterRequest { gitHubUser: string; } -// Warning: (ae-missing-release-tag) "ListClusterStatusesResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ListClusterStatusesResponse { // (undocumented) result: ClusterStatus[]; } -// Warning: (ae-missing-release-tag) "PollLogRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface PollLogRequest { // (undocumented) @@ -208,8 +174,6 @@ export interface PollLogRequest { targetRepo: string; } -// Warning: (ae-missing-release-tag) "Status" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface Status { // (undocumented) @@ -220,8 +184,6 @@ export interface Status { status: string; } -// Warning: (ae-missing-release-tag) "StatusResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface StatusResponse { // (undocumented) diff --git a/plugins/gitops-profiles/src/api.ts b/plugins/gitops-profiles/src/api.ts index ca141140d8..fe47d20336 100644 --- a/plugins/gitops-profiles/src/api.ts +++ b/plugins/gitops-profiles/src/api.ts @@ -13,8 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export interface CloneFromTemplateRequest { templateRepository: string; secrets: { @@ -27,6 +29,7 @@ export interface CloneFromTemplateRequest { gitHubToken: string; } +/** @public */ export interface ApplyProfileRequest { targetOrg: string; targetRepo: string; @@ -35,6 +38,7 @@ export interface ApplyProfileRequest { profiles: string[]; } +/** @public */ export interface ChangeClusterStateRequest { targetOrg: string; targetRepo: string; @@ -43,6 +47,7 @@ export interface ChangeClusterStateRequest { clusterState: 'present' | 'absent'; // /api/cluster/state } +/** @public */ export interface PollLogRequest { targetOrg: string; targetRepo: string; @@ -50,18 +55,21 @@ export interface PollLogRequest { gitHubToken: string; } +/** @public */ export interface Status { status: string; // queued, in_progress, or completed message: string; conclusion: string; // success, failure, neutral, cancelled, skipped, timed_out, or action_required } +/** @public */ export interface StatusResponse { result: Status[]; link: string; status: string; } +/** @public */ export interface ClusterStatus { name: string; link: string; @@ -70,23 +78,28 @@ export interface ClusterStatus { runStatus: Status[]; } +/** @public */ export interface ListClusterStatusesResponse { result: ClusterStatus[]; } +/** @public */ export interface ListClusterRequest { gitHubUser: string; gitHubToken: string; } +/** @public */ export interface GithubUserInfoRequest { accessToken: string; } +/** @public */ export interface GithubUserInfoResponse { login: string; } +/** @public */ export class FetchError extends Error { get name(): string { return this.constructor.name; @@ -101,6 +114,7 @@ export class FetchError extends Error { } } +/** @public */ export type GitOpsApi = { url: string; fetchLog(req: PollLogRequest): Promise; @@ -111,10 +125,12 @@ export type GitOpsApi = { fetchUserInfo(req: GithubUserInfoRequest): Promise; }; +/** @public */ export const gitOpsApiRef = createApiRef({ id: 'plugin.gitops.service', }); +/** @public */ export class GitOpsRestApi implements GitOpsApi { constructor(public url: string = '') {} diff --git a/plugins/gitops-profiles/src/plugin.ts b/plugins/gitops-profiles/src/plugin.ts index fc961d7026..8c8bfc52fa 100644 --- a/plugins/gitops-profiles/src/plugin.ts +++ b/plugins/gitops-profiles/src/plugin.ts @@ -26,6 +26,7 @@ import { createRoutableExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const gitopsProfilesPlugin = createPlugin({ id: 'gitops-profiles', apis: [ @@ -38,6 +39,7 @@ export const gitopsProfilesPlugin = createPlugin({ }, }); +/** @public */ export const GitopsProfilesClusterListPage = gitopsProfilesPlugin.provide( createRoutableExtension({ name: 'GitopsProfilesClusterListPage', @@ -46,6 +48,7 @@ export const GitopsProfilesClusterListPage = gitopsProfilesPlugin.provide( }), ); +/** @public */ export const GitopsProfilesClusterPage = gitopsProfilesPlugin.provide( createRoutableExtension({ name: 'GitopsProfilesClusterPage', @@ -54,6 +57,7 @@ export const GitopsProfilesClusterPage = gitopsProfilesPlugin.provide( }), ); +/** @public */ export const GitopsProfilesCreatePage = gitopsProfilesPlugin.provide( createRoutableExtension({ name: 'GitopsProfilesCreatePage', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 3cd7ad57d0..19fbfd79be 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -208,7 +208,6 @@ const ALLOW_WARNINGS = [ 'plugins/github-actions', 'plugins/github-deployments', 'plugins/github-pull-requests-board', - 'plugins/gitops-profiles', 'plugins/jenkins', 'plugins/jenkins-backend', 'plugins/kubernetes', From 96081d960a6b441bde8c8d0e80de2c595bfd6b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:49:13 +0200 Subject: [PATCH 176/275] newrelic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/newrelic-dashboard/api-report.md | 2 -- plugins/newrelic-dashboard/src/Router.tsx | 1 + plugins/newrelic-dashboard/src/index.ts | 1 + plugins/newrelic/api-report.md | 4 ---- plugins/newrelic/src/plugin.ts | 2 ++ scripts/api-extractor.ts | 2 -- 6 files changed, 4 insertions(+), 8 deletions(-) diff --git a/plugins/newrelic-dashboard/api-report.md b/plugins/newrelic-dashboard/api-report.md index 223a327d20..740fc46ef7 100644 --- a/plugins/newrelic-dashboard/api-report.md +++ b/plugins/newrelic-dashboard/api-report.md @@ -22,8 +22,6 @@ export const EntityNewRelicDashboardCard: () => JSX.Element; // @public (undocumented) export const EntityNewRelicDashboardContent: () => JSX.Element; -// Warning: (ae-missing-release-tag) "isNewRelicDashboardAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const isNewRelicDashboardAvailable: (entity: Entity) => boolean; diff --git a/plugins/newrelic-dashboard/src/Router.tsx b/plugins/newrelic-dashboard/src/Router.tsx index 24a5a1037f..b549d1107b 100644 --- a/plugins/newrelic-dashboard/src/Router.tsx +++ b/plugins/newrelic-dashboard/src/Router.tsx @@ -21,6 +21,7 @@ import { NewRelicDashboard } from './components/NewRelicDashboard'; import { useEntity } from '@backstage/plugin-catalog-react'; import { NEWRELIC_GUID_ANNOTATION } from './constants'; +/** @public */ export const isNewRelicDashboardAvailable = (entity: Entity) => Boolean(entity?.metadata?.annotations?.[NEWRELIC_GUID_ANNOTATION]); diff --git a/plugins/newrelic-dashboard/src/index.ts b/plugins/newrelic-dashboard/src/index.ts index 060306524f..ba87b8a514 100644 --- a/plugins/newrelic-dashboard/src/index.ts +++ b/plugins/newrelic-dashboard/src/index.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { newRelicDashboardPlugin, EntityNewRelicDashboardCard, diff --git a/plugins/newrelic/api-report.md b/plugins/newrelic/api-report.md index fbf639ee9d..302b7c918a 100644 --- a/plugins/newrelic/api-report.md +++ b/plugins/newrelic/api-report.md @@ -8,13 +8,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "NewRelicPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const NewRelicPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "newRelicPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const newRelicPlugin: BackstagePlugin< { diff --git a/plugins/newrelic/src/plugin.ts b/plugins/newrelic/src/plugin.ts index 6cf77a785f..0387c50aa9 100644 --- a/plugins/newrelic/src/plugin.ts +++ b/plugins/newrelic/src/plugin.ts @@ -27,6 +27,7 @@ export const rootRouteRef = createRouteRef({ id: 'newrelic', }); +/** @public */ export const newRelicPlugin = createPlugin({ id: 'newrelic', apis: [ @@ -41,6 +42,7 @@ export const newRelicPlugin = createPlugin({ }, }); +/** @public */ export const NewRelicPage = newRelicPlugin.provide( createRoutableExtension({ name: 'NewRelicPage', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 19fbfd79be..61f304730f 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -212,8 +212,6 @@ const ALLOW_WARNINGS = [ 'plugins/jenkins-backend', 'plugins/kubernetes', 'plugins/kubernetes-common', - 'plugins/newrelic', - 'plugins/newrelic-dashboard', ]; async function resolvePackagePath( From 37fe3f71b74806effbb82a5b0651c3f01d19ae86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 14:51:34 +0200 Subject: [PATCH 177/275] dynatrace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/dynatrace/api-report.md | 2 -- plugins/dynatrace/src/index.ts | 1 + plugins/dynatrace/src/plugin.ts | 3 ++- scripts/api-extractor.ts | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/dynatrace/api-report.md b/plugins/dynatrace/api-report.md index 59fd145250..1677318a9f 100644 --- a/plugins/dynatrace/api-report.md +++ b/plugins/dynatrace/api-report.md @@ -14,8 +14,6 @@ export const dynatracePlugin: BackstagePlugin<{}, {}, {}>; // @public export const DynatraceTab: () => JSX.Element; -// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// // @public export const isDynatraceAvailable: (entity: Entity) => boolean; diff --git a/plugins/dynatrace/src/index.ts b/plugins/dynatrace/src/index.ts index c96c16201d..0c5da219a5 100644 --- a/plugins/dynatrace/src/index.ts +++ b/plugins/dynatrace/src/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { dynatracePlugin, DynatraceTab, isDynatraceAvailable } from './plugin'; diff --git a/plugins/dynatrace/src/plugin.ts b/plugins/dynatrace/src/plugin.ts index 26ecb1aba1..1488ae7417 100644 --- a/plugins/dynatrace/src/plugin.ts +++ b/plugins/dynatrace/src/plugin.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { dynatraceApiRef, DynatraceClient } from './api'; import { createApiFactory, @@ -55,7 +56,7 @@ export const dynatracePlugin = createPlugin({ /** * Checks if the entity has a dynatrace id annotation. * @public - * @param entity {Entity} - The entity to check for the dynatrace id annotation. + * @param entity - The entity to check for the dynatrace id annotation. */ export const isDynatraceAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[DYNATRACE_ID_ANNOTATION]) || diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 61f304730f..a508a13496 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -203,7 +203,6 @@ const ALLOW_WARNINGS = [ 'plugins/catalog-import', 'plugins/circleci', 'plugins/cost-insights', - 'plugins/dynatrace', 'plugins/git-release-manager', 'plugins/github-actions', 'plugins/github-deployments', From 0f668b58eb55e8925a8bd2e4612064dcdf768e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:01:04 +0200 Subject: [PATCH 178/275] circleci MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/circleci/api-report.md | 21 +-------------------- plugins/circleci/src/api/CircleCIApi.ts | 21 ++++++++++++--------- plugins/circleci/src/api/index.ts | 3 ++- plugins/circleci/src/components/Router.tsx | 2 ++ plugins/circleci/src/constants.ts | 1 + plugins/circleci/src/plugin.ts | 2 ++ plugins/circleci/src/route-refs.tsx | 2 ++ scripts/api-extractor.ts | 1 - 8 files changed, 22 insertions(+), 31 deletions(-) diff --git a/plugins/circleci/api-report.md b/plugins/circleci/api-report.md index 034cfae3ee..277b5720de 100644 --- a/plugins/circleci/api-report.md +++ b/plugins/circleci/api-report.md @@ -26,17 +26,12 @@ export { BuildSummary }; export { BuildWithSteps }; -// Warning: (ae-missing-release-tag) "CIRCLECI_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CIRCLECI_ANNOTATION = 'circleci.com/project-slug'; -// Warning: (ae-missing-release-tag) "CircleCIApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class CircleCIApi { - // Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts - constructor(options: Options); + constructor(options: { discoveryApi: DiscoveryApi; proxyPath?: string }); // (undocumented) getBuild( buildNumber: number, @@ -59,44 +54,30 @@ export class CircleCIApi { ): Promise; } -// Warning: (ae-missing-release-tag) "circleCIApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const circleCIApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "circleCIBuildRouteRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const circleCIBuildRouteRef: SubRouteRef>; -// Warning: (ae-missing-release-tag) "circleCIPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const circleCIPlugin: BackstagePlugin<{}, {}, {}>; export { circleCIPlugin }; export { circleCIPlugin as plugin }; -// Warning: (ae-missing-release-tag) "circleCIRouteRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const circleCIRouteRef: RouteRef; -// Warning: (ae-missing-release-tag) "EntityCircleCIContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityCircleCIContent: () => JSX.Element; export { GitType }; -// Warning: (ae-missing-release-tag) "isCircleCIAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isCircleCIAvailable: (entity: Entity) => boolean; export { isCircleCIAvailable }; export { isCircleCIAvailable as isPluginApplicableToEntity }; -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const Router: () => JSX.Element; ``` diff --git a/plugins/circleci/src/api/CircleCIApi.ts b/plugins/circleci/src/api/CircleCIApi.ts index 931feec4d5..6ec8addd76 100644 --- a/plugins/circleci/src/api/CircleCIApi.ts +++ b/plugins/circleci/src/api/CircleCIApi.ts @@ -28,28 +28,31 @@ import { } from 'circleci-api'; import { createApiRef, DiscoveryApi } from '@backstage/core-plugin-api'; +/** @public */ export { GitType }; + +/** @public */ export type { BuildWithSteps, BuildStepAction, BuildSummary }; +/** @public */ export const circleCIApiRef = createApiRef({ id: 'plugin.circleci.service', }); const DEFAULT_PROXY_PATH = '/circleci/api'; -type Options = { - discoveryApi: DiscoveryApi; - /** - * Path to use for requests via the proxy, defaults to /circleci/api - */ - proxyPath?: string; -}; - +/** @public */ export class CircleCIApi { private readonly discoveryApi: DiscoveryApi; private readonly proxyPath: string; - constructor(options: Options) { + constructor(options: { + discoveryApi: DiscoveryApi; + /** + * Path to use for requests via the proxy, defaults to /circleci/api + */ + proxyPath?: string; + }) { this.discoveryApi = options.discoveryApi; this.proxyPath = options.proxyPath ?? DEFAULT_PROXY_PATH; } diff --git a/plugins/circleci/src/api/index.ts b/plugins/circleci/src/api/index.ts index 213ce2de8b..08a549b1ee 100644 --- a/plugins/circleci/src/api/index.ts +++ b/plugins/circleci/src/api/index.ts @@ -14,7 +14,8 @@ * limitations under the License. */ -export { CircleCIApi, circleCIApiRef, GitType } from './CircleCIApi'; +export type { GitType } from './CircleCIApi'; +export { CircleCIApi, circleCIApiRef } from './CircleCIApi'; export type { BuildWithSteps, BuildStepAction, diff --git a/plugins/circleci/src/components/Router.tsx b/plugins/circleci/src/components/Router.tsx index e16c91f2a0..09c74dbbe8 100644 --- a/plugins/circleci/src/components/Router.tsx +++ b/plugins/circleci/src/components/Router.tsx @@ -24,9 +24,11 @@ import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; +/** @public */ export const isCircleCIAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[CIRCLECI_ANNOTATION]); +/** @public */ export const Router = () => { const { entity } = useEntity(); diff --git a/plugins/circleci/src/constants.ts b/plugins/circleci/src/constants.ts index 97c016826e..3478c22aee 100644 --- a/plugins/circleci/src/constants.ts +++ b/plugins/circleci/src/constants.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +/** @public */ export const CIRCLECI_ANNOTATION = 'circleci.com/project-slug'; diff --git a/plugins/circleci/src/plugin.ts b/plugins/circleci/src/plugin.ts index 890e40ae9a..0cf7fb52ea 100644 --- a/plugins/circleci/src/plugin.ts +++ b/plugins/circleci/src/plugin.ts @@ -23,6 +23,7 @@ import { createRoutableExtension, } from '@backstage/core-plugin-api'; +/** @public */ export const circleCIPlugin = createPlugin({ id: 'circleci', apis: [ @@ -34,6 +35,7 @@ export const circleCIPlugin = createPlugin({ ], }); +/** @public */ export const EntityCircleCIContent = circleCIPlugin.provide( createRoutableExtension({ name: 'EntityCircleCIContent', diff --git a/plugins/circleci/src/route-refs.tsx b/plugins/circleci/src/route-refs.tsx index e8579b9f0d..22295c4ebc 100644 --- a/plugins/circleci/src/route-refs.tsx +++ b/plugins/circleci/src/route-refs.tsx @@ -16,10 +16,12 @@ import { createRouteRef, createSubRouteRef } from '@backstage/core-plugin-api'; +/** @public */ export const circleCIRouteRef = createRouteRef({ id: 'circle-ci', }); +/** @public */ export const circleCIBuildRouteRef = createSubRouteRef({ id: 'circle-ci/build', parent: circleCIRouteRef, diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index a508a13496..530c29dd18 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -201,7 +201,6 @@ const ALLOW_WARNINGS = [ 'packages/core-components', 'plugins/catalog', 'plugins/catalog-import', - 'plugins/circleci', 'plugins/cost-insights', 'plugins/git-release-manager', 'plugins/github-actions', From 9053fd9ad3969c3fc9f2712c8531cfb4871d7181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:03:08 +0200 Subject: [PATCH 179/275] jenkins-backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/jenkins-backend/api-report.md | 14 -------------- .../src/service/jenkinsInfoProvider.ts | 7 +++++++ plugins/jenkins-backend/src/service/router.ts | 2 ++ scripts/api-extractor.ts | 1 - 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/plugins/jenkins-backend/api-report.md b/plugins/jenkins-backend/api-report.md index 029f2c7af3..489a5e4fb2 100644 --- a/plugins/jenkins-backend/api-report.md +++ b/plugins/jenkins-backend/api-report.md @@ -11,13 +11,9 @@ import { Logger } from 'winston'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "DefaultJenkinsInfoProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class DefaultJenkinsInfoProvider implements JenkinsInfoProvider { // (undocumented) @@ -37,8 +33,6 @@ export class DefaultJenkinsInfoProvider implements JenkinsInfoProvider { static readonly OLD_JENKINS_ANNOTATION = 'jenkins.io/github-folder'; } -// Warning: (ae-missing-release-tag) "JenkinsConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class JenkinsConfig { constructor(instances: JenkinsInstanceConfig[]); @@ -48,8 +42,6 @@ export class JenkinsConfig { readonly instances: JenkinsInstanceConfig[]; } -// Warning: (ae-missing-release-tag) "JenkinsInfo" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface JenkinsInfo { // (undocumented) @@ -62,8 +54,6 @@ export interface JenkinsInfo { jobFullName: string; } -// Warning: (ae-missing-release-tag) "JenkinsInfoProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface JenkinsInfoProvider { // (undocumented) @@ -74,8 +64,6 @@ export interface JenkinsInfoProvider { }): Promise; } -// Warning: (ae-missing-release-tag) "JenkinsInstanceConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface JenkinsInstanceConfig { // (undocumented) @@ -90,8 +78,6 @@ export interface JenkinsInstanceConfig { username: string; } -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts index fcce944dc8..37aae5cb1c 100644 --- a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts +++ b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts @@ -22,6 +22,7 @@ import { } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; +/** @public */ export interface JenkinsInfoProvider { getInstance(options: { /** @@ -37,6 +38,7 @@ export interface JenkinsInfoProvider { }): Promise; } +/** @public */ export interface JenkinsInfo { baseUrl: string; headers?: Record; @@ -44,6 +46,7 @@ export interface JenkinsInfo { crumbIssuer?: boolean; } +/** @public */ export interface JenkinsInstanceConfig { name: string; baseUrl: string; @@ -54,6 +57,8 @@ export interface JenkinsInstanceConfig { /** * Holds multiple Jenkins configurations. + * + * @public */ export class JenkinsConfig { constructor(public readonly instances: JenkinsInstanceConfig[]) {} @@ -163,6 +168,8 @@ export class JenkinsConfig { * Use default config and annotations, build using fromConfig static function. * * This will fallback through various deprecated config and annotation schemes. + * + * @public */ export class DefaultJenkinsInfoProvider implements JenkinsInfoProvider { static readonly OLD_JENKINS_ANNOTATION = 'jenkins.io/github-folder'; diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index b4c06314e1..bc0e978396 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -28,12 +28,14 @@ import { import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; import { stringifyEntityRef } from '@backstage/catalog-model'; +/** @public */ export interface RouterOptions { logger: Logger; jenkinsInfoProvider: JenkinsInfoProvider; permissions?: PermissionEvaluator | PermissionAuthorizer; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 530c29dd18..a00427579d 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -207,7 +207,6 @@ const ALLOW_WARNINGS = [ 'plugins/github-deployments', 'plugins/github-pull-requests-board', 'plugins/jenkins', - 'plugins/jenkins-backend', 'plugins/kubernetes', 'plugins/kubernetes-common', ]; From 22022c45d05b87ae65a077665486749e6ad3c528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:08:13 +0200 Subject: [PATCH 180/275] github-actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/github-actions/api-report.md | 48 +++++-------------- .../src/api/GithubActionsApi.ts | 1 + plugins/github-actions/src/api/types.ts | 4 ++ .../src/components/Cards/Cards.tsx | 2 + .../Cards/RecentWorkflowRunsCard.test.tsx | 3 +- .../Cards/RecentWorkflowRunsCard.tsx | 16 +++---- .../src/components/Cards/index.ts | 1 + .../github-actions/src/components/Router.tsx | 3 ++ .../components/getProjectNameFromEntity.ts | 2 + scripts/api-extractor.ts | 1 - 10 files changed, 34 insertions(+), 47 deletions(-) diff --git a/plugins/github-actions/api-report.md b/plugins/github-actions/api-report.md index 8cf70eabcc..b1628996e0 100644 --- a/plugins/github-actions/api-report.md +++ b/plugins/github-actions/api-report.md @@ -14,8 +14,6 @@ import { OAuthApi } from '@backstage/core-plugin-api'; import { RestEndpointMethodTypes } from '@octokit/rest'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "BuildStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum BuildStatus { // (undocumented) @@ -43,18 +41,14 @@ export const EntityLatestGithubActionsForBranchCard: (props: { variant?: InfoCardVariants | undefined; }) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts -// // @public (undocumented) -export const EntityRecentGithubActionsRunsCard: ({ - branch, - dense, - limit, - variant, -}: Props) => JSX.Element; +export const EntityRecentGithubActionsRunsCard: (props: { + branch?: string | undefined; + dense?: boolean | undefined; + limit?: number | undefined; + variant?: InfoCardVariants | undefined; +}) => JSX.Element; -// Warning: (ae-missing-release-tag) "GITHUB_ACTIONS_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; @@ -112,8 +106,6 @@ export type GithubActionsApi = { >; }; -// Warning: (ae-missing-release-tag) "githubActionsApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const githubActionsApiRef: ApiRef; @@ -189,15 +181,11 @@ const githubActionsPlugin: BackstagePlugin< export { githubActionsPlugin }; export { githubActionsPlugin as plugin }; -// Warning: (ae-missing-release-tag) "isGithubActionsAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const isGithubActionsAvailable: (entity: Entity) => boolean; export { isGithubActionsAvailable }; export { isGithubActionsAvailable as isPluginApplicableToEntity }; -// Warning: (ae-missing-release-tag) "Job" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Job = { html_url?: string; @@ -210,47 +198,35 @@ export type Job = { steps?: Step[]; }; -// Warning: (ae-missing-release-tag) "Jobs" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Jobs = { total_count: number; jobs: Job[]; }; -// Warning: (ae-missing-release-tag) "LatestWorkflowRunCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const LatestWorkflowRunCard: (props: { branch: string; variant?: InfoCardVariants; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "LatestWorkflowsForBranchCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const LatestWorkflowsForBranchCard: (props: { branch: string; variant?: InfoCardVariants; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "RecentWorkflowRunsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const RecentWorkflowRunsCard: ({ - branch, - dense, - limit, - variant, -}: Props) => JSX.Element; +export const RecentWorkflowRunsCard: (props: { + branch?: string; + dense?: boolean; + limit?: number; + variant?: InfoCardVariants; +}) => JSX.Element; -// Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const Router: () => JSX.Element; -// Warning: (ae-missing-release-tag) "Step" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Step = { name: string; diff --git a/plugins/github-actions/src/api/GithubActionsApi.ts b/plugins/github-actions/src/api/GithubActionsApi.ts index 25bbf0b809..14dbc3210e 100644 --- a/plugins/github-actions/src/api/GithubActionsApi.ts +++ b/plugins/github-actions/src/api/GithubActionsApi.ts @@ -17,6 +17,7 @@ import { RestEndpointMethodTypes } from '@octokit/rest'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export const githubActionsApiRef = createApiRef({ id: 'plugin.githubactions.service', }); diff --git a/plugins/github-actions/src/api/types.ts b/plugins/github-actions/src/api/types.ts index db926d9c03..2e997d9bf7 100644 --- a/plugins/github-actions/src/api/types.ts +++ b/plugins/github-actions/src/api/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export type Step = { name: string; status: string; @@ -23,6 +24,7 @@ export type Step = { completed_at?: string; }; +/** @public */ export type Job = { html_url?: string; status: string; @@ -34,11 +36,13 @@ export type Job = { steps?: Step[]; }; +/** @public */ export type Jobs = { total_count: number; jobs: Job[]; }; +/** @public */ export enum BuildStatus { 'success', 'failure', diff --git a/plugins/github-actions/src/components/Cards/Cards.tsx b/plugins/github-actions/src/components/Cards/Cards.tsx index 5e53096ba4..79777ed8c3 100644 --- a/plugins/github-actions/src/components/Cards/Cards.tsx +++ b/plugins/github-actions/src/components/Cards/Cards.tsx @@ -78,6 +78,7 @@ const WidgetContent = (props: { ); }; +/** @public */ export const LatestWorkflowRunCard = (props: { branch: string; variant?: InfoCardVariants; @@ -118,6 +119,7 @@ export const LatestWorkflowRunCard = (props: { ); }; +/** @public */ export const LatestWorkflowsForBranchCard = (props: { branch: string; variant?: InfoCardVariants; diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx index a987a8569f..7a20501072 100644 --- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx +++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.test.tsx @@ -21,7 +21,6 @@ import { render } from '@testing-library/react'; import React from 'react'; import { MemoryRouter } from 'react-router'; import { useWorkflowRuns } from '../useWorkflowRuns'; -import type { Props as RecentWorkflowRunsCardProps } from './RecentWorkflowRunsCard'; import { RecentWorkflowRunsCard } from './RecentWorkflowRunsCard'; import { ConfigReader } from '@backstage/core-app-api'; @@ -75,7 +74,7 @@ describe('', () => { jest.resetAllMocks(); }); - const renderSubject = (props: RecentWorkflowRunsCardProps = {}) => + const renderSubject = (props: any = {}) => render( diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx index 3eba4981e7..fcd0f194a3 100644 --- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx +++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx @@ -32,29 +32,28 @@ import { const firstLine = (message: string): string => message.split('\n')[0]; -export type Props = { +/** @public */ +export const RecentWorkflowRunsCard = (props: { branch?: string; dense?: boolean; limit?: number; variant?: InfoCardVariants; -}; +}) => { + const { branch, dense = false, limit = 5, variant } = props; -export const RecentWorkflowRunsCard = ({ - branch, - dense = false, - limit = 5, - variant, -}: Props) => { const { entity } = useEntity(); const config = useApi(configApiRef); const errorApi = useApi(errorApiRef); + // TODO: Get github hostname from metadata annotation const hostname = readGitHubIntegrationConfigs( config.getOptionalConfigArray('integrations.github') ?? [], )[0].host; + const [owner, repo] = ( entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? '/' ).split('/'); + const [{ runs = [], loading, error }] = useWorkflowRuns({ hostname, owner, @@ -62,6 +61,7 @@ export const RecentWorkflowRunsCard = ({ branch, initialPageSize: limit, }); + useEffect(() => { if (error) { errorApi.post(error); diff --git a/plugins/github-actions/src/components/Cards/index.ts b/plugins/github-actions/src/components/Cards/index.ts index 1457b9c86f..335c0c42da 100644 --- a/plugins/github-actions/src/components/Cards/index.ts +++ b/plugins/github-actions/src/components/Cards/index.ts @@ -13,5 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { LatestWorkflowRunCard, LatestWorkflowsForBranchCard } from './Cards'; export { RecentWorkflowRunsCard } from './RecentWorkflowRunsCard'; diff --git a/plugins/github-actions/src/components/Router.tsx b/plugins/github-actions/src/components/Router.tsx index 793293cce8..d8b8a87d38 100644 --- a/plugins/github-actions/src/components/Router.tsx +++ b/plugins/github-actions/src/components/Router.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import React from 'react'; import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; @@ -23,9 +24,11 @@ import { WorkflowRunsTable } from './WorkflowRunsTable'; import { GITHUB_ACTIONS_ANNOTATION } from './getProjectNameFromEntity'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; +/** @public */ export const isGithubActionsAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION]); +/** @public */ export const Router = () => { const { entity } = useEntity(); diff --git a/plugins/github-actions/src/components/getProjectNameFromEntity.ts b/plugins/github-actions/src/components/getProjectNameFromEntity.ts index 13e0a2bdd5..24e546754e 100644 --- a/plugins/github-actions/src/components/getProjectNameFromEntity.ts +++ b/plugins/github-actions/src/components/getProjectNameFromEntity.ts @@ -13,8 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Entity } from '@backstage/catalog-model'; +/** @public */ export const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; export const getProjectNameFromEntity = (entity: Entity) => diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index a00427579d..6368414951 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -203,7 +203,6 @@ const ALLOW_WARNINGS = [ 'plugins/catalog-import', 'plugins/cost-insights', 'plugins/git-release-manager', - 'plugins/github-actions', 'plugins/github-deployments', 'plugins/github-pull-requests-board', 'plugins/jenkins', From 3195aafd94bfe66fc09b9d2bbe6507ab1b2c4b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:20:47 +0200 Subject: [PATCH 181/275] github-deployments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/github-deployments/api-report.md | 100 ++++++++---------- plugins/github-deployments/src/Router.tsx | 3 + plugins/github-deployments/src/api/index.ts | 4 +- .../src/components/GithubDeploymentsCard.tsx | 1 + .../GithubDeploymentsTable.tsx | 11 +- .../GithubDeploymentsTable/columns.tsx | 91 ++++++++-------- .../GithubDeploymentsTable/index.ts | 1 + .../GithubDeploymentsTable/presets.ts | 19 ++-- plugins/github-deployments/src/index.ts | 6 +- plugins/github-deployments/src/plugin.ts | 2 + scripts/api-extractor.ts | 1 - 11 files changed, 121 insertions(+), 118 deletions(-) diff --git a/plugins/github-deployments/api-report.md b/plugins/github-deployments/api-report.md index 3e75b2f9bc..82d2222127 100644 --- a/plugins/github-deployments/api-report.md +++ b/plugins/github-deployments/api-report.md @@ -9,34 +9,6 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { TableColumn } from '@backstage/core-components'; -// Warning: (ae-forgotten-export) The symbol "GithubDeployment" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "createCommitColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -function createCommitColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createCreatorColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -function createCreatorColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createEnvironmentColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -function createEnvironmentColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createLastUpdatedColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -function createLastUpdatedColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "createStatusColumn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -function createStatusColumn(): TableColumn; - -// Warning: (ae-missing-release-tag) "EntityGithubDeploymentsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityGithubDeploymentsCard: (props: { last?: number | undefined; @@ -44,37 +16,57 @@ export const EntityGithubDeploymentsCard: (props: { columns?: TableColumn[] | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "githubDeploymentsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export const GITHUB_PROJECT_SLUG_ANNOTATION = 'github.com/project-slug'; + +// @public (undocumented) +export type GithubDeployment = { + environment: string; + state: string; + updatedAt: string; + commit: { + abbreviatedOid: string; + commitUrl: string; + } | null; + statuses: { + nodes: Node_2[]; + }; + creator: { + login: string; + }; + repository: { + nameWithOwner: string; + }; + payload: string; +}; + // @public (undocumented) export const githubDeploymentsPlugin: BackstagePlugin<{}, {}, {}>; -// Warning: (ae-forgotten-export) The symbol "GithubDeploymentsTableProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "GithubDeploymentsTable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// Warning: (ae-missing-release-tag) "GithubDeploymentsTable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export function GithubDeploymentsTable( - props: GithubDeploymentsTableProps, -): JSX.Element; +export const GithubDeploymentsTable: { + (props: { + deployments: GithubDeployment[]; + isLoading: boolean; + reload: () => void; + columns: TableColumn[]; + }): JSX.Element; + columns: Readonly<{ + createEnvironmentColumn(): TableColumn; + createStatusColumn(): TableColumn; + createCommitColumn(): TableColumn; + createCreatorColumn(): TableColumn; + createLastUpdatedColumn(): TableColumn; + }>; + defaultDeploymentColumns: TableColumn[]; +}; -// @public (undocumented) -export namespace GithubDeploymentsTable { - var // Warning: (ae-forgotten-export) The symbol "columnFactories" needs to be exported by the entry point index.d.ts - // - // (undocumented) - columns: typeof columnFactories; - var // (undocumented) - defaultDeploymentColumns: TableColumn[]; -} - -// Warning: (ae-missing-release-tag) "GithubStateIndicator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -const GithubStateIndicator: (props: { state: string }) => JSX.Element; - -// Warning: (ae-missing-release-tag) "isGithubDeploymentsAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const isGithubDeploymentsAvailable: (entity: Entity) => boolean; + +// @public (undocumented) +type Node_2 = { + logUrl?: string; +}; +export { Node_2 as Node }; ``` diff --git a/plugins/github-deployments/src/Router.tsx b/plugins/github-deployments/src/Router.tsx index 5425a49710..1e6990b991 100644 --- a/plugins/github-deployments/src/Router.tsx +++ b/plugins/github-deployments/src/Router.tsx @@ -13,9 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Entity } from '@backstage/catalog-model'; +/** @public */ export const GITHUB_PROJECT_SLUG_ANNOTATION = 'github.com/project-slug'; +/** @public */ export const isGithubDeploymentsAvailable = (entity: Entity) => Boolean(entity?.metadata.annotations?.[GITHUB_PROJECT_SLUG_ANNOTATION]); diff --git a/plugins/github-deployments/src/api/index.ts b/plugins/github-deployments/src/api/index.ts index 48363557ff..6e246f7569 100644 --- a/plugins/github-deployments/src/api/index.ts +++ b/plugins/github-deployments/src/api/index.ts @@ -53,10 +53,12 @@ const getBaseUrl = ( return config?.config.apiBaseUrl; }; -type Node = { +/** @public */ +export type Node = { logUrl?: string; }; +/** @public */ export type GithubDeployment = { environment: string; state: string; diff --git a/plugins/github-deployments/src/components/GithubDeploymentsCard.tsx b/plugins/github-deployments/src/components/GithubDeploymentsCard.tsx index 68881617f4..e828116f41 100644 --- a/plugins/github-deployments/src/components/GithubDeploymentsCard.tsx +++ b/plugins/github-deployments/src/components/GithubDeploymentsCard.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import React from 'react'; import useAsyncRetry from 'react-use/lib/useAsyncRetry'; import { GithubDeployment, githubDeploymentsApiRef } from '../api'; diff --git a/plugins/github-deployments/src/components/GithubDeploymentsTable/GithubDeploymentsTable.tsx b/plugins/github-deployments/src/components/GithubDeploymentsTable/GithubDeploymentsTable.tsx index 2c48f3eef1..61295abff0 100644 --- a/plugins/github-deployments/src/components/GithubDeploymentsTable/GithubDeploymentsTable.tsx +++ b/plugins/github-deployments/src/components/GithubDeploymentsTable/GithubDeploymentsTable.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { GithubDeployment } from '../../api'; import { Typography, makeStyles } from '@material-ui/core'; import SyncIcon from '@material-ui/icons/Sync'; -import * as columnFactories from './columns'; +import { columnFactories } from './columns'; import { defaultDeploymentColumns } from './presets'; import { Table, TableColumn } from '@backstage/core-components'; @@ -29,14 +29,13 @@ const useStyles = makeStyles(theme => ({ }, })); -type GithubDeploymentsTableProps = { +/** @public */ +export const GithubDeploymentsTable = (props: { deployments: GithubDeployment[]; isLoading: boolean; reload: () => void; columns: TableColumn[]; -}; - -export function GithubDeploymentsTable(props: GithubDeploymentsTableProps) { +}) => { const { deployments, isLoading, reload, columns } = props; const classes = useStyles(); @@ -64,7 +63,7 @@ export function GithubDeploymentsTable(props: GithubDeploymentsTableProps) { } /> ); -} +}; GithubDeploymentsTable.columns = columnFactories; diff --git a/plugins/github-deployments/src/components/GithubDeploymentsTable/columns.tsx b/plugins/github-deployments/src/components/GithubDeploymentsTable/columns.tsx index 9a720c0e75..5dffdd9089 100644 --- a/plugins/github-deployments/src/components/GithubDeploymentsTable/columns.tsx +++ b/plugins/github-deployments/src/components/GithubDeploymentsTable/columns.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import React from 'react'; import { GithubDeployment } from '../../api'; import { DateTime } from 'luxon'; @@ -43,50 +44,54 @@ export const GithubStateIndicator = (props: { state: string }) => { } }; -export function createEnvironmentColumn(): TableColumn { - return { - title: 'Environment', - field: 'environment', - highlight: true, - }; -} +export const columnFactories = Object.freeze({ + createEnvironmentColumn(): TableColumn { + return { + title: 'Environment', + field: 'environment', + highlight: true, + }; + }, -export function createStatusColumn(): TableColumn { - return { - title: 'Status', - render: (row: GithubDeployment): JSX.Element => ( - - - {row.state} - - ), - }; -} - -export function createCommitColumn(): TableColumn { - return { - title: 'Commit', - render: (row: GithubDeployment) => - row.commit && ( - - {row.commit.abbreviatedOid} - + createStatusColumn(): TableColumn { + return { + title: 'Status', + render: (row: GithubDeployment): JSX.Element => ( + + + {row.state} + ), - }; -} + }; + }, -export function createCreatorColumn(): TableColumn { - return { - title: 'Creator', - field: 'creator.login', - }; -} + createCommitColumn(): TableColumn { + return { + title: 'Commit', + render: (row: GithubDeployment) => + row.commit && ( + + {row.commit.abbreviatedOid} + + ), + }; + }, -export function createLastUpdatedColumn(): TableColumn { - return { - title: 'Last Updated', - render: (row: GithubDeployment): JSX.Element => ( - {DateTime.fromISO(row.updatedAt).toRelative({ locale: 'en' })} - ), - }; -} + createCreatorColumn(): TableColumn { + return { + title: 'Creator', + field: 'creator.login', + }; + }, + + createLastUpdatedColumn(): TableColumn { + return { + title: 'Last Updated', + render: (row: GithubDeployment): JSX.Element => ( + + {DateTime.fromISO(row.updatedAt).toRelative({ locale: 'en' })} + + ), + }; + }, +}); diff --git a/plugins/github-deployments/src/components/GithubDeploymentsTable/index.ts b/plugins/github-deployments/src/components/GithubDeploymentsTable/index.ts index 14cf093337..e3d57629b5 100644 --- a/plugins/github-deployments/src/components/GithubDeploymentsTable/index.ts +++ b/plugins/github-deployments/src/components/GithubDeploymentsTable/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { GithubDeploymentsTable } from './GithubDeploymentsTable'; diff --git a/plugins/github-deployments/src/components/GithubDeploymentsTable/presets.ts b/plugins/github-deployments/src/components/GithubDeploymentsTable/presets.ts index ba48857c3c..af0e21ea23 100644 --- a/plugins/github-deployments/src/components/GithubDeploymentsTable/presets.ts +++ b/plugins/github-deployments/src/components/GithubDeploymentsTable/presets.ts @@ -13,20 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { GithubDeployment } from '../../api'; -import { - createEnvironmentColumn, - createStatusColumn, - createCommitColumn, - createLastUpdatedColumn, - createCreatorColumn, -} from './columns'; +import { columnFactories } from './columns'; import { TableColumn } from '@backstage/core-components'; export const defaultDeploymentColumns: TableColumn[] = [ - createEnvironmentColumn(), - createStatusColumn(), - createCommitColumn(), - createCreatorColumn(), - createLastUpdatedColumn(), + columnFactories.createEnvironmentColumn(), + columnFactories.createStatusColumn(), + columnFactories.createCommitColumn(), + columnFactories.createCreatorColumn(), + columnFactories.createLastUpdatedColumn(), ]; diff --git a/plugins/github-deployments/src/index.ts b/plugins/github-deployments/src/index.ts index 55c1d2f2d2..7806da54ba 100644 --- a/plugins/github-deployments/src/index.ts +++ b/plugins/github-deployments/src/index.ts @@ -20,6 +20,10 @@ * @packageDocumentation */ +export type { Node, GithubDeployment } from './api'; export { githubDeploymentsPlugin, EntityGithubDeploymentsCard } from './plugin'; export { GithubDeploymentsTable } from './components/GithubDeploymentsTable'; -export { isGithubDeploymentsAvailable } from './Router'; +export { + isGithubDeploymentsAvailable, + GITHUB_PROJECT_SLUG_ANNOTATION, +} from './Router'; diff --git a/plugins/github-deployments/src/plugin.ts b/plugins/github-deployments/src/plugin.ts index 5c4ef9c3e4..1d5dee57bc 100644 --- a/plugins/github-deployments/src/plugin.ts +++ b/plugins/github-deployments/src/plugin.ts @@ -22,6 +22,7 @@ import { githubAuthApiRef, } from '@backstage/core-plugin-api'; +/** @public */ export const githubDeploymentsPlugin = createPlugin({ id: 'github-deployments', apis: [ @@ -37,6 +38,7 @@ export const githubDeploymentsPlugin = createPlugin({ ], }); +/** @public */ export const EntityGithubDeploymentsCard = githubDeploymentsPlugin.provide( createComponentExtension({ name: 'EntityGithubDeploymentsCard', diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 6368414951..3ba5af6c7b 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -203,7 +203,6 @@ const ALLOW_WARNINGS = [ 'plugins/catalog-import', 'plugins/cost-insights', 'plugins/git-release-manager', - 'plugins/github-deployments', 'plugins/github-pull-requests-board', 'plugins/jenkins', 'plugins/kubernetes', From 249a3b47dffc2541d23dcdcb9a42c3b95d0181bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:37:12 +0200 Subject: [PATCH 182/275] cost-insights MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/cost-insights/api-report.md | 261 +++++------------- .../src/alerts/ProjectGrowthAlert.tsx | 3 +- .../src/alerts/UnlabeledDataflowAlert.tsx | 3 +- .../cost-insights/src/api/CostInsightsApi.ts | 3 + .../src/components/BarChart/BarChart.tsx | 22 +- .../components/BarChart/BarChartLegend.tsx | 14 +- .../components/BarChart/BarChartTooltip.tsx | 15 +- .../BarChart/BarChartTooltipItem.tsx | 8 +- .../src/components/CostGrowth/CostGrowth.tsx | 6 +- .../CostGrowth/CostGrowthIndicator.tsx | 13 +- .../src/components/LegendItem/LegendItem.tsx | 12 +- plugins/cost-insights/src/example/client.ts | 1 + plugins/cost-insights/src/hooks/useConfig.tsx | 1 + .../cost-insights/src/hooks/useCurrency.tsx | 1 + plugins/cost-insights/src/index.ts | 5 + plugins/cost-insights/src/plugin.ts | 4 + .../cost-insights/src/testUtils/providers.tsx | 52 ++-- plugins/cost-insights/src/types/Alert.ts | 27 +- .../src/types/ChangeStatistic.ts | 3 + .../cost-insights/src/types/CurrencyType.ts | 1 + plugins/cost-insights/src/types/DateFormat.ts | 1 + plugins/cost-insights/src/types/Icon.ts | 2 + plugins/cost-insights/src/types/Loading.ts | 1 + plugins/cost-insights/src/types/Theme.ts | 11 +- plugins/cost-insights/src/types/index.ts | 11 + scripts/api-extractor.ts | 1 - 26 files changed, 222 insertions(+), 260 deletions(-) diff --git a/plugins/cost-insights/api-report.md b/plugins/cost-insights/api-report.md index 2a4cecc4eb..f4c8c9bd6f 100644 --- a/plugins/cost-insights/api-report.md +++ b/plugins/cost-insights/api-report.md @@ -25,8 +25,6 @@ import { SetStateAction } from 'react'; import { TooltipProps } from 'recharts'; import { TypographyProps } from '@material-ui/core'; -// Warning: (ae-missing-release-tag) "Alert" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type Alert = { title: string | JSX.Element; @@ -43,8 +41,6 @@ export type Alert = { onDismissed?(options: AlertOptions): Promise; }; -// Warning: (ae-missing-release-tag) "AlertCost" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AlertCost { // (undocumented) @@ -53,8 +49,6 @@ export interface AlertCost { id: string; } -// Warning: (ae-missing-release-tag) "AlertDismissFormData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AlertDismissFormData { // (undocumented) @@ -65,8 +59,6 @@ export interface AlertDismissFormData { reason: AlertDismissReason; } -// Warning: (ae-missing-release-tag) "AlertDismissOption" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AlertDismissOption { // (undocumented) @@ -75,13 +67,9 @@ export interface AlertDismissOption { reason: string; } -// Warning: (ae-missing-release-tag) "AlertDismissOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const AlertDismissOptions: AlertDismissOption[]; -// Warning: (ae-missing-release-tag) "AlertDismissReason" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum AlertDismissReason { // (undocumented) @@ -98,8 +86,6 @@ export enum AlertDismissReason { Seasonal = 'seasonal', } -// Warning: (ae-missing-release-tag) "AlertForm" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AlertForm< A extends Alert = any, @@ -108,8 +94,6 @@ export type AlertForm< AlertFormProps & RefAttributes >; -// Warning: (ae-missing-release-tag) "AlertFormProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AlertFormProps
    = { alert: A; @@ -117,8 +101,6 @@ export type AlertFormProps = { disableSubmit: (isDisabled: boolean) => void; }; -// Warning: (ae-missing-release-tag) "AlertOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AlertOptions { // (undocumented) @@ -127,29 +109,21 @@ export interface AlertOptions { group: string; } -// Warning: (ae-missing-release-tag) "AlertSnoozeFormData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export interface AlertSnoozeFormData { // (undocumented) intervals: string; } -// Warning: (ae-missing-release-tag) "AlertSnoozeOption" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AlertSnoozeOption = { label: string; duration: Duration; }; -// Warning: (ae-missing-release-tag) "AlertSnoozeOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const AlertSnoozeOptions: AlertSnoozeOption[]; -// Warning: (ae-missing-release-tag) "AlertStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum AlertStatus { // (undocumented) @@ -160,36 +134,17 @@ export enum AlertStatus { Snoozed = 'snoozed', } -// Warning: (ae-missing-release-tag) "BarChart" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const BarChart: ({ - resources, - responsive, - displayAmount, - options, - tooltip, - onClick, - onMouseMove, -}: BarChartProps) => JSX.Element; +export const BarChart: (props: BarChartProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "BarChartData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public +// @public @deprecated (undocumented) export interface BarChartData extends BarChartOptions {} -// Warning: (ae-missing-release-tag) "BarChartLegend" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const BarChartLegend: ({ - costStart, - costEnd, - options, - children, -}: PropsWithChildren) => JSX.Element; +export const BarChartLegend: ( + props: PropsWithChildren, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "BarChartLegendOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BarChartLegendOptions = { previousName: string; @@ -199,8 +154,6 @@ export type BarChartLegendOptions = { hideMarker?: boolean; }; -// Warning: (ae-missing-release-tag) "BarChartLegendProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BarChartLegendProps = { costStart: number; @@ -208,8 +161,6 @@ export type BarChartLegendProps = { options?: Partial; }; -// Warning: (ae-missing-release-tag) "BarChartOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface BarChartOptions { // (undocumented) @@ -222,8 +173,6 @@ export interface BarChartOptions { previousName: string; } -// Warning: (ae-missing-release-tag) "BarChartProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BarChartProps = { resources: ResourceData[]; @@ -235,34 +184,21 @@ export type BarChartProps = { onMouseMove?: RechartsFunction; }; -// Warning: (ae-missing-release-tag) "BarChartTooltip" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const BarChartTooltip: ({ - title, - content, - subtitle, - topRight, - actions, - children, -}: PropsWithChildren) => JSX.Element; +export const BarChartTooltip: ( + props: PropsWithChildren, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "BarChartTooltipItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const BarChartTooltipItem: ({ - item, -}: BarChartTooltipItemProps) => JSX.Element; +export const BarChartTooltipItem: ( + props: BarChartTooltipItemProps, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "BarChartTooltipItemProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BarChartTooltipItemProps = { item: TooltipItem; }; -// Warning: (ae-missing-release-tag) "BarChartTooltipProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type BarChartTooltipProps = { title: string; @@ -272,13 +208,9 @@ export type BarChartTooltipProps = { actions?: ReactNode; }; -// Warning: (ae-missing-release-tag) "ChangeStatistic" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type ChangeStatistic = common.ChangeStatistic; -// Warning: (ae-missing-release-tag) "ChangeThreshold" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum ChangeThreshold { // (undocumented) @@ -295,28 +227,26 @@ export type ChartData = { [key: string]: number; }; -// Warning: (ae-missing-release-tag) "Cost" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type ConfigContextProps = { + metrics: Metric[]; + products: Product[]; + icons: Icon[]; + engineerCost: number; + currencies: Currency[]; +}; + // @public @deprecated (undocumented) export type Cost = common.Cost; -// Warning: (ae-missing-release-tag) "CostGrowth" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const CostGrowth: ({ change, duration }: CostGrowthProps) => JSX.Element; +export const CostGrowth: (props: CostGrowthProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "CostGrowthIndicator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const CostGrowthIndicator: ({ - change, - formatter, - className, - ...props -}: CostGrowthIndicatorProps) => JSX.Element; +export const CostGrowthIndicator: ( + props: CostGrowthIndicatorProps, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "CostGrowthIndicatorProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CostGrowthIndicatorProps = TypographyProps & { change: ChangeStatistic; @@ -328,16 +258,12 @@ export type CostGrowthIndicatorProps = TypographyProps & { ) => Maybe; }; -// Warning: (ae-missing-release-tag) "CostGrowthProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CostGrowthProps = { change: ChangeStatistic; duration: Duration; }; -// Warning: (ae-missing-release-tag) "CostInsightsApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CostInsightsApi = { getLastCompleteBillingDate(): Promise; @@ -350,36 +276,36 @@ export type CostInsightsApi = { getAlerts(group: string): Promise; }; -// Warning: (ae-missing-release-tag) "costInsightsApiRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const costInsightsApiRef: ApiRef; -// Warning: (ae-missing-release-tag) "CostInsightsLabelDataflowInstructionsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CostInsightsLabelDataflowInstructionsPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "CostInsightsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CostInsightsPage: () => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "CostInsightsPaletteAdditions" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "CostInsightsPalette" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type CostInsightsPalette = BackstagePalette & CostInsightsPaletteAdditions; -// Warning: (ae-missing-release-tag) "CostInsightsPaletteOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type CostInsightsPaletteAdditions = { + blue: string; + lightBlue: string; + darkBlue: string; + magenta: string; + yellow: string; + tooltip: CostInsightsTooltipOptions; + navigationText: string; + alertBackground: string; + dataViz: string[]; +}; + // @public (undocumented) export type CostInsightsPaletteOptions = PaletteOptions & CostInsightsPaletteAdditions; -// Warning: (ae-missing-release-tag) "costInsightsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) const costInsightsPlugin: BackstagePlugin< { @@ -393,27 +319,27 @@ const costInsightsPlugin: BackstagePlugin< export { costInsightsPlugin }; export { costInsightsPlugin as plugin }; -// Warning: (ae-missing-release-tag) "CostInsightsProjectGrowthInstructionsPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const CostInsightsProjectGrowthInstructionsPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "CostInsightsTheme" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CostInsightsTheme extends BackstageTheme { // (undocumented) palette: CostInsightsPalette; } -// Warning: (ae-missing-release-tag) "CostInsightsThemeOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CostInsightsThemeOptions extends PaletteOptions { // (undocumented) palette: CostInsightsPaletteOptions; } +// @public (undocumented) +export type CostInsightsTooltipOptions = { + background: string; + color: string; +}; + // @public (undocumented) export interface Currency { // (undocumented) @@ -428,8 +354,12 @@ export interface Currency { unit: string; } -// Warning: (ae-missing-release-tag) "CurrencyType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// +// @public (undocumented) +export type CurrencyContextProps = { + currency: Currency; + setCurrency: Dispatch>; +}; + // @public (undocumented) export enum CurrencyType { // (undocumented) @@ -442,8 +372,6 @@ export enum CurrencyType { USD = 'USD', } -// Warning: (ae-missing-release-tag) "DataKey" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum DataKey { // (undocumented) @@ -454,13 +382,9 @@ export enum DataKey { Previous = 'previous', } -// Warning: (ae-missing-release-tag) "DateAggregation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type DateAggregation = common.DateAggregation; -// Warning: (ae-missing-release-tag) "DEFAULT_DATE_FORMAT" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const DEFAULT_DATE_FORMAT = 'yyyy-LL-dd'; @@ -476,18 +400,12 @@ export enum Duration { P90D = 'P90D', } -// Warning: (ae-missing-release-tag) "EngineerThreshold" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EngineerThreshold = 0.5; -// Warning: (ae-missing-release-tag) "Entity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type Entity = common.Entity; -// Warning: (ae-missing-release-tag) "ExampleCostInsightsClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export class ExampleCostInsightsClient implements CostInsightsApi { // (undocumented) @@ -508,13 +426,9 @@ export class ExampleCostInsightsClient implements CostInsightsApi { getUserGroups(userId: string): Promise; } -// Warning: (ae-missing-release-tag) "Group" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type Group = common.Group; -// Warning: (ae-missing-release-tag) "GrowthType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum GrowthType { // (undocumented) @@ -525,16 +439,12 @@ export enum GrowthType { Savings = 1, } -// Warning: (ae-missing-release-tag) "Icon" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Icon = { kind: string; component: JSX.Element; }; -// Warning: (ae-missing-release-tag) "IconType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export enum IconType { // (undocumented) @@ -551,18 +461,11 @@ export enum IconType { Storage = 'storage', } -// Warning: (ae-missing-release-tag) "LegendItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const LegendItem: ({ - title, - tooltipText, - markerColor, - children, -}: PropsWithChildren) => JSX.Element; +export const LegendItem: ( + props: PropsWithChildren, +) => JSX.Element; -// Warning: (ae-missing-release-tag) "LegendItemProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type LegendItemProps = { title: string; @@ -570,43 +473,37 @@ export type LegendItemProps = { markerColor?: string; }; -// Warning: (ae-missing-release-tag) "Loading" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type Loading = Record; -// Warning: (ae-missing-release-tag) "Maybe" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type Maybe = common.Maybe; -// Warning: (ae-missing-release-tag) "Metric" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type Metric = common.Metric; -// Warning: (ae-missing-release-tag) "MetricData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type MetricData = common.MetricData; -// Warning: (ae-forgotten-export) The symbol "MockConfigProviderProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "MockConfigProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const MockConfigProvider: ({ - children, - ...context -}: MockConfigProviderProps) => JSX.Element; +export const MockConfigProvider: ( + props: MockConfigProviderProps, +) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "MockCurrencyProviderProps" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "MockCurrencyProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export const MockCurrencyProvider: ({ - children, - ...context -}: MockCurrencyProviderProps) => JSX.Element; +export type MockConfigProviderProps = PropsWithChildren< + Partial +>; + +// @public (undocumented) +export const MockCurrencyProvider: ( + props: MockCurrencyProviderProps, +) => JSX.Element; + +// @public (undocumented) +export type MockCurrencyProviderProps = PropsWithChildren< + Partial +>; // @public (undocumented) export interface PageFilters { @@ -620,16 +517,12 @@ export interface PageFilters { project: Maybe_2; } -// Warning: (ae-missing-release-tag) "Product" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type Product = common.Product; // @public (undocumented) export type ProductFilters = Array; -// Warning: (ae-missing-release-tag) "ProductInsightsOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type ProductInsightsOptions = { product: string; @@ -646,13 +539,9 @@ export interface ProductPeriod { productType: string; } -// Warning: (ae-missing-release-tag) "Project" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type Project = common.Project; -// Warning: (ae-missing-release-tag) "ProjectGrowthAlert" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class ProjectGrowthAlert implements Alert { constructor(data: ProjectGrowthData); @@ -668,8 +557,6 @@ export class ProjectGrowthAlert implements Alert { get url(): string; } -// Warning: (ae-missing-release-tag) "ProjectGrowthData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ProjectGrowthData { // (undocumented) @@ -686,8 +573,6 @@ export interface ProjectGrowthData { project: string; } -// Warning: (ae-missing-release-tag) "ResourceData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ResourceData { // (undocumented) @@ -698,8 +583,6 @@ export interface ResourceData { previous: number; } -// Warning: (ae-missing-release-tag) "TooltipItem" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type TooltipItem = { fill: string; @@ -707,13 +590,9 @@ export type TooltipItem = { value: string; }; -// Warning: (ae-missing-release-tag) "Trendline" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type Trendline = common.Trendline; -// Warning: (ae-missing-release-tag) "UnlabeledDataflowAlert" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export class UnlabeledDataflowAlert implements Alert { constructor(data: UnlabeledDataflowData); @@ -731,8 +610,6 @@ export class UnlabeledDataflowAlert implements Alert { get url(): string; } -// Warning: (ae-missing-release-tag) "UnlabeledDataflowAlertProject" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface UnlabeledDataflowAlertProject { // (undocumented) @@ -743,8 +620,6 @@ export interface UnlabeledDataflowAlertProject { unlabeledCost: number; } -// Warning: (ae-missing-release-tag) "UnlabeledDataflowData" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface UnlabeledDataflowData { // (undocumented) diff --git a/plugins/cost-insights/src/alerts/ProjectGrowthAlert.tsx b/plugins/cost-insights/src/alerts/ProjectGrowthAlert.tsx index 6767477f67..f432a14ff8 100644 --- a/plugins/cost-insights/src/alerts/ProjectGrowthAlert.tsx +++ b/plugins/cost-insights/src/alerts/ProjectGrowthAlert.tsx @@ -22,8 +22,9 @@ import { Alert, ProjectGrowthData } from '../types'; * The alert below is an example of an Alert implementation; the CostInsightsApi permits returning * any implementation of the Alert type, so adopters can create their own. The CostInsightsApi * fetches alert data from the backend, then creates Alert classes with the data. + * + * @public */ - export class ProjectGrowthAlert implements Alert { data: ProjectGrowthData; diff --git a/plugins/cost-insights/src/alerts/UnlabeledDataflowAlert.tsx b/plugins/cost-insights/src/alerts/UnlabeledDataflowAlert.tsx index da96f7d1f8..b4ee3d559c 100644 --- a/plugins/cost-insights/src/alerts/UnlabeledDataflowAlert.tsx +++ b/plugins/cost-insights/src/alerts/UnlabeledDataflowAlert.tsx @@ -22,8 +22,9 @@ import { Alert, AlertStatus, UnlabeledDataflowData } from '../types'; * The alert below is an example of an Alert implementation; the CostInsightsApi permits returning * any implementation of the Alert type, so adopters can create their own. The CostInsightsApi * fetches alert data from the backend, then creates Alert classes with the data. + * + * @public */ - export class UnlabeledDataflowAlert implements Alert { data: UnlabeledDataflowData; status?: AlertStatus; diff --git a/plugins/cost-insights/src/api/CostInsightsApi.ts b/plugins/cost-insights/src/api/CostInsightsApi.ts index 558cb57c0e..3c97407f08 100644 --- a/plugins/cost-insights/src/api/CostInsightsApi.ts +++ b/plugins/cost-insights/src/api/CostInsightsApi.ts @@ -25,6 +25,7 @@ import { } from '../types'; import { createApiRef } from '@backstage/core-plugin-api'; +/** @public */ export type ProductInsightsOptions = { /** * The product from the cost-insights configuration in app-config.yaml @@ -47,6 +48,7 @@ export type ProductInsightsOptions = { project: Maybe; }; +/** @public */ export type CostInsightsApi = { /** * Get the most current date for which billing data is complete, in YYYY-MM-DD format. This helps @@ -146,6 +148,7 @@ export type CostInsightsApi = { getAlerts(group: string): Promise; }; +/** @public */ export const costInsightsApiRef = createApiRef({ id: 'plugin.costinsights.service', }); diff --git a/plugins/cost-insights/src/components/BarChart/BarChart.tsx b/plugins/cost-insights/src/components/BarChart/BarChart.tsx index 27ef69db7a..145819db08 100644 --- a/plugins/cost-insights/src/components/BarChart/BarChart.tsx +++ b/plugins/cost-insights/src/components/BarChart/BarChart.tsx @@ -61,6 +61,7 @@ export const defaultTooltip: ContentRenderer = ({ ); }; +/** @public */ export type BarChartProps = { resources: ResourceData[]; responsive?: boolean; @@ -71,15 +72,18 @@ export type BarChartProps = { onMouseMove?: RechartsFunction; }; -export const BarChart = ({ - resources, - responsive = true, - displayAmount = 6, - options = {}, - tooltip = defaultTooltip, - onClick, - onMouseMove, -}: BarChartProps) => { +/** @public */ +export const BarChart = (props: BarChartProps) => { + const { + resources, + responsive = true, + displayAmount = 6, + options = {}, + tooltip = defaultTooltip, + onClick, + onMouseMove, + } = props; + const theme = useTheme(); const styles = useBarChartStyles(theme); const [activeChart, setActiveChart] = useState(false); diff --git a/plugins/cost-insights/src/components/BarChart/BarChartLegend.tsx b/plugins/cost-insights/src/components/BarChart/BarChartLegend.tsx index e7afe5fa59..72c3120dd4 100644 --- a/plugins/cost-insights/src/components/BarChart/BarChartLegend.tsx +++ b/plugins/cost-insights/src/components/BarChart/BarChartLegend.tsx @@ -21,6 +21,7 @@ import { currencyFormatter } from '../../utils/formatters'; import { CostInsightsTheme } from '../../types'; import { useBarChartLayoutStyles as useStyles } from '../../utils/styles'; +/** @public */ export type BarChartLegendOptions = { previousName: string; previousFill: string; @@ -29,18 +30,19 @@ export type BarChartLegendOptions = { hideMarker?: boolean; }; +/** @public */ export type BarChartLegendProps = { costStart: number; costEnd: number; options?: Partial; }; -export const BarChartLegend = ({ - costStart, - costEnd, - options = {}, - children, -}: PropsWithChildren) => { +/** @public */ +export const BarChartLegend = ( + props: PropsWithChildren, +) => { + const { costStart, costEnd, options = {}, children } = props; + const theme = useTheme(); const classes = useStyles(); diff --git a/plugins/cost-insights/src/components/BarChart/BarChartTooltip.tsx b/plugins/cost-insights/src/components/BarChart/BarChartTooltip.tsx index 101f0cbb8c..0b522e5e09 100644 --- a/plugins/cost-insights/src/components/BarChart/BarChartTooltip.tsx +++ b/plugins/cost-insights/src/components/BarChart/BarChartTooltip.tsx @@ -19,6 +19,7 @@ import classnames from 'classnames'; import { Box, Divider, Typography } from '@material-ui/core'; import { useTooltipStyles as useStyles } from '../../utils/styles'; +/** @public */ export type BarChartTooltipProps = { title: string; content?: ReactNode | string; @@ -27,14 +28,12 @@ export type BarChartTooltipProps = { actions?: ReactNode; }; -export const BarChartTooltip = ({ - title, - content, - subtitle, - topRight, - actions, - children, -}: PropsWithChildren) => { +/** @public */ +export const BarChartTooltip = ( + props: PropsWithChildren, +) => { + const { title, content, subtitle, topRight, actions, children } = props; + const classes = useStyles(); const titleClassName = classnames(classes.truncate, { [classes.maxWidth]: topRight === undefined, diff --git a/plugins/cost-insights/src/components/BarChart/BarChartTooltipItem.tsx b/plugins/cost-insights/src/components/BarChart/BarChartTooltipItem.tsx index 758bc9ffa0..fc50ab979a 100644 --- a/plugins/cost-insights/src/components/BarChart/BarChartTooltipItem.tsx +++ b/plugins/cost-insights/src/components/BarChart/BarChartTooltipItem.tsx @@ -19,18 +19,24 @@ import { Box, Typography } from '@material-ui/core'; import LensIcon from '@material-ui/icons/Lens'; import { useTooltipStyles as useStyles } from '../../utils/styles'; +/** @public */ export type TooltipItem = { fill: string; label: string; value: string; }; +/** @public */ export type BarChartTooltipItemProps = { item: TooltipItem; }; -export const BarChartTooltipItem = ({ item }: BarChartTooltipItemProps) => { +/** @public */ +export const BarChartTooltipItem = (props: BarChartTooltipItemProps) => { + const { item } = props; + const classes = useStyles(); + return ( { +/** @public */ +export const CostGrowth = (props: CostGrowthProps) => { + const { change, duration } = props; + const styles = useStyles(); const { engineerCost } = useConfig(); const [currency] = useCurrency(); diff --git a/plugins/cost-insights/src/components/CostGrowth/CostGrowthIndicator.tsx b/plugins/cost-insights/src/components/CostGrowth/CostGrowthIndicator.tsx index e7746495d6..8993504c84 100644 --- a/plugins/cost-insights/src/components/CostGrowth/CostGrowthIndicator.tsx +++ b/plugins/cost-insights/src/components/CostGrowth/CostGrowthIndicator.tsx @@ -23,6 +23,7 @@ import { growthOf } from '../../utils/change'; import { ChangeStatistic, GrowthType, Maybe } from '../../types'; import { useCostGrowthStyles as useStyles } from '../../utils/styles'; +/** @public */ export type CostGrowthIndicatorProps = TypographyProps & { change: ChangeStatistic; formatter?: ( @@ -31,12 +32,10 @@ export type CostGrowthIndicatorProps = TypographyProps & { ) => Maybe; }; -export const CostGrowthIndicator = ({ - change, - formatter, - className, - ...props -}: CostGrowthIndicatorProps) => { +/** @public */ +export const CostGrowthIndicator = (props: CostGrowthIndicatorProps) => { + const { change, formatter, className, ...extraProps } = props; + const classes = useStyles(); const growth = growthOf(change); @@ -46,7 +45,7 @@ export const CostGrowthIndicator = ({ }); return ( - + {formatter ? formatter(change, { absolute: true }) : change.ratio} {growth === GrowthType.Excess && } {growth === GrowthType.Savings && } diff --git a/plugins/cost-insights/src/components/LegendItem/LegendItem.tsx b/plugins/cost-insights/src/components/LegendItem/LegendItem.tsx index 92dc706003..0b8a993b39 100644 --- a/plugins/cost-insights/src/components/LegendItem/LegendItem.tsx +++ b/plugins/cost-insights/src/components/LegendItem/LegendItem.tsx @@ -20,19 +20,19 @@ import LensIcon from '@material-ui/icons/Lens'; import HelpOutlineOutlinedIcon from '@material-ui/icons/HelpOutlineOutlined'; import { useCostGrowthLegendStyles } from '../../utils/styles'; +/** @public */ export type LegendItemProps = { title: string; tooltipText?: string; markerColor?: string; }; -export const LegendItem = ({ - title, - tooltipText, - markerColor, - children, -}: PropsWithChildren) => { +/** @public */ +export const LegendItem = (props: PropsWithChildren) => { + const { title, tooltipText, markerColor, children } = props; + const classes = useCostGrowthLegendStyles(); + return ( { return new Promise(resolve => setTimeout(resolve, 0, res)); diff --git a/plugins/cost-insights/src/hooks/useConfig.tsx b/plugins/cost-insights/src/hooks/useConfig.tsx index 236c142b3b..322e1e35f1 100644 --- a/plugins/cost-insights/src/hooks/useConfig.tsx +++ b/plugins/cost-insights/src/hooks/useConfig.tsx @@ -58,6 +58,7 @@ import { configApiRef, useApi } from '@backstage/core-plugin-api'; * rate: 3.5 */ +/** @public */ export type ConfigContextProps = { metrics: Metric[]; products: Product[]; diff --git a/plugins/cost-insights/src/hooks/useCurrency.tsx b/plugins/cost-insights/src/hooks/useCurrency.tsx index 13458ee432..32dc907578 100644 --- a/plugins/cost-insights/src/hooks/useCurrency.tsx +++ b/plugins/cost-insights/src/hooks/useCurrency.tsx @@ -23,6 +23,7 @@ import React, { import { Currency } from '../types'; import { useConfig } from './useConfig'; +/** @public */ export type CurrencyContextProps = { currency: Currency; setCurrency: Dispatch>; diff --git a/plugins/cost-insights/src/index.ts b/plugins/cost-insights/src/index.ts index b9a4bb83e0..2c46156005 100644 --- a/plugins/cost-insights/src/index.ts +++ b/plugins/cost-insights/src/index.ts @@ -38,8 +38,13 @@ export { LegendItem, } from './components'; export { MockConfigProvider, MockCurrencyProvider } from './testUtils'; +export type { + MockConfigProviderProps, + MockCurrencyProviderProps, +} from './testUtils'; export * from './api'; export * from './alerts'; +export type { ConfigContextProps, CurrencyContextProps } from './hooks'; export * from './types'; export type { diff --git a/plugins/cost-insights/src/plugin.ts b/plugins/cost-insights/src/plugin.ts index a422098e08..789d803438 100644 --- a/plugins/cost-insights/src/plugin.ts +++ b/plugins/cost-insights/src/plugin.ts @@ -32,6 +32,7 @@ export const unlabeledDataflowAlertRef = createRouteRef({ id: 'cost-insights:labeling-jobs', }); +/** @public */ export const costInsightsPlugin = createPlugin({ id: 'cost-insights', featureFlags: [{ name: 'cost-insights-currencies' }], @@ -42,6 +43,7 @@ export const costInsightsPlugin = createPlugin({ }, }); +/** @public */ export const CostInsightsPage = costInsightsPlugin.provide( createRoutableExtension({ name: 'CostInsightsPage', @@ -51,6 +53,7 @@ export const CostInsightsPage = costInsightsPlugin.provide( }), ); +/** @public */ export const CostInsightsProjectGrowthInstructionsPage = costInsightsPlugin.provide( createRoutableExtension({ @@ -63,6 +66,7 @@ export const CostInsightsProjectGrowthInstructionsPage = }), ); +/** @public */ export const CostInsightsLabelDataflowInstructionsPage = costInsightsPlugin.provide( createRoutableExtension({ diff --git a/plugins/cost-insights/src/testUtils/providers.tsx b/plugins/cost-insights/src/testUtils/providers.tsx index efcb15b5a3..8088fca3c6 100644 --- a/plugins/cost-insights/src/testUtils/providers.tsx +++ b/plugins/cost-insights/src/testUtils/providers.tsx @@ -27,12 +27,11 @@ import { import { ScrollContext, ScrollContextProps } from '../hooks/useScroll'; import { Group, Duration } from '../types'; -type PartialPropsWithChildren = PropsWithChildren>; - export const MockGroups: Group[] = [{ id: 'tech' }, { id: 'mock-group' }]; -export type MockFilterProviderProps = - PartialPropsWithChildren; +export type MockFilterProviderProps = PropsWithChildren< + Partial +>; export const MockFilterProvider = ({ children, @@ -56,8 +55,9 @@ export const MockFilterProvider = ({ ); }; -export type MockLoadingProviderProps = - PartialPropsWithChildren; +export type MockLoadingProviderProps = PropsWithChildren< + Partial +>; export const MockLoadingProvider = ({ children, @@ -75,13 +75,15 @@ export const MockLoadingProvider = ({ ); }; -export type MockConfigProviderProps = - PartialPropsWithChildren; +/** @public */ +export type MockConfigProviderProps = PropsWithChildren< + Partial +>; + +/** @public */ +export const MockConfigProvider = (props: MockConfigProviderProps) => { + const { children, ...context } = props; -export const MockConfigProvider = ({ - children, - ...context -}: MockConfigProviderProps) => { const defaultContext: ConfigContextProps = { metrics: [], products: [], @@ -89,6 +91,7 @@ export const MockConfigProvider = ({ engineerCost: 0, currencies: [], }; + return ( {children} @@ -96,13 +99,15 @@ export const MockConfigProvider = ({ ); }; -export type MockCurrencyProviderProps = - PartialPropsWithChildren; +/** @public */ +export type MockCurrencyProviderProps = PropsWithChildren< + Partial +>; + +/** @public */ +export const MockCurrencyProvider = (props: MockCurrencyProviderProps) => { + const { children, ...context } = props; -export const MockCurrencyProvider = ({ - children, - ...context -}: MockCurrencyProviderProps) => { const defaultContext: CurrencyContextProps = { currency: { kind: null, @@ -111,6 +116,7 @@ export const MockCurrencyProvider = ({ }, setCurrency: jest.fn(), }; + return ( {children} @@ -118,8 +124,9 @@ export const MockCurrencyProvider = ({ ); }; -export type MockBillingDateProviderProps = - PartialPropsWithChildren; +export type MockBillingDateProviderProps = PropsWithChildren< + Partial +>; export const MockBillingDateProvider = ({ children, @@ -149,8 +156,9 @@ export const MockScrollProvider = ({ children }: MockScrollProviderProps) => { ); }; -export type MockGroupsProviderProps = - PartialPropsWithChildren; +export type MockGroupsProviderProps = PropsWithChildren< + Partial +>; export const MockGroupsProvider = ({ children, diff --git a/plugins/cost-insights/src/types/Alert.ts b/plugins/cost-insights/src/types/Alert.ts index 483b9a654d..0b6773b3a8 100644 --- a/plugins/cost-insights/src/types/Alert.ts +++ b/plugins/cost-insights/src/types/Alert.ts @@ -31,8 +31,9 @@ import { Duration } from './Duration'; * React.forwardRef. See https://reactjs.org/docs/forwarding-refs * * Errors thrown within hooks will generate a snackbar error notification. + * + * @public */ - export type Alert = { title: string | JSX.Element; subtitle: string | JSX.Element; @@ -48,6 +49,7 @@ export type Alert = { onDismissed?(options: AlertOptions): Promise; }; +/** @public */ export type AlertForm< A extends Alert = any, Data = any, @@ -55,6 +57,7 @@ export type AlertForm< AlertFormProps & RefAttributes >; +/** @public */ export interface AlertOptions { data: T; group: string; @@ -69,11 +72,14 @@ export interface AlertOptions { * inclusive of the last day. * * https://en.wikipedia.org/wiki/ISO_8601#Repeating_intervals + * + * @public */ export interface AlertSnoozeFormData { intervals: string; } +/** @public */ export interface AlertDismissFormData { other: Maybe; reason: AlertDismissReason; @@ -81,23 +87,27 @@ export interface AlertDismissFormData { } // TODO: Convert enum to literal +/** @public */ export enum AlertStatus { Snoozed = 'snoozed', Accepted = 'accepted', Dismissed = 'dismissed', } +/** @public */ export type AlertFormProps = { alert: A; onSubmit: (data: FormData) => void; disableSubmit: (isDisabled: boolean) => void; }; +/** @public */ export interface AlertDismissOption { label: string; reason: string; } +/** @public */ export enum AlertDismissReason { Other = 'other', Resolved = 'resolved', @@ -107,6 +117,7 @@ export enum AlertDismissReason { NotApplicable = 'not-applicable', } +/** @public */ export const AlertDismissOptions: AlertDismissOption[] = [ { reason: AlertDismissReason.Resolved, @@ -134,11 +145,13 @@ export const AlertDismissOptions: AlertDismissOption[] = [ }, ]; +/** @public */ export type AlertSnoozeOption = { label: string; duration: Duration; }; +/** @public */ export const AlertSnoozeOptions: AlertSnoozeOption[] = [ { duration: Duration.P7D, @@ -154,17 +167,20 @@ export const AlertSnoozeOptions: AlertSnoozeOption[] = [ }, ]; +/** @public */ export interface AlertCost { id: string; aggregation: [number, number]; } +/** @public */ export interface ResourceData { previous: number; current: number; name: Maybe; } +/** @public */ export interface BarChartOptions { previousFill: string; currentFill: string; @@ -172,15 +188,20 @@ export interface BarChartOptions { currentName: string; } -/** deprecated use BarChartOptions instead */ +/** + * @public + * @deprecated use BarChartOptions instead + */ export interface BarChartData extends BarChartOptions {} +/** @public */ export enum DataKey { Previous = 'previous', Current = 'current', Name = 'name', } +/** @public */ export interface ProjectGrowthData { project: string; periodStart: string; @@ -190,6 +211,7 @@ export interface ProjectGrowthData { products: Array; } +/** @public */ export interface UnlabeledDataflowData { periodStart: string; periodEnd: string; @@ -198,6 +220,7 @@ export interface UnlabeledDataflowData { labeledCost: number; } +/** @public */ export interface UnlabeledDataflowAlertProject { id: string; unlabeledCost: number; diff --git a/plugins/cost-insights/src/types/ChangeStatistic.ts b/plugins/cost-insights/src/types/ChangeStatistic.ts index 8264b23c8d..ba022aacf3 100644 --- a/plugins/cost-insights/src/types/ChangeStatistic.ts +++ b/plugins/cost-insights/src/types/ChangeStatistic.ts @@ -14,13 +14,16 @@ * limitations under the License. */ +/** @public */ export const EngineerThreshold = 0.5; +/** @public */ export enum ChangeThreshold { upper = 0.05, lower = -0.05, } +/** @public */ export enum GrowthType { Negligible, Savings, diff --git a/plugins/cost-insights/src/types/CurrencyType.ts b/plugins/cost-insights/src/types/CurrencyType.ts index 0316e8f90e..b20c57393f 100644 --- a/plugins/cost-insights/src/types/CurrencyType.ts +++ b/plugins/cost-insights/src/types/CurrencyType.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @public */ export enum CurrencyType { USD = 'USD', CarbonOffsetTons = 'CARBON_OFFSET_TONS', diff --git a/plugins/cost-insights/src/types/DateFormat.ts b/plugins/cost-insights/src/types/DateFormat.ts index c5d9c83f6e..4ada898905 100644 --- a/plugins/cost-insights/src/types/DateFormat.ts +++ b/plugins/cost-insights/src/types/DateFormat.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +/** @public */ export const DEFAULT_DATE_FORMAT = 'yyyy-LL-dd'; diff --git a/plugins/cost-insights/src/types/Icon.ts b/plugins/cost-insights/src/types/Icon.ts index 24312677c9..968abd18a6 100644 --- a/plugins/cost-insights/src/types/Icon.ts +++ b/plugins/cost-insights/src/types/Icon.ts @@ -14,11 +14,13 @@ * limitations under the License. */ +/** @public */ export type Icon = { kind: string; component: JSX.Element; }; +/** @public */ export enum IconType { Compute = 'compute', Data = 'data', diff --git a/plugins/cost-insights/src/types/Loading.ts b/plugins/cost-insights/src/types/Loading.ts index eddab2401e..36dc0159c5 100644 --- a/plugins/cost-insights/src/types/Loading.ts +++ b/plugins/cost-insights/src/types/Loading.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +/** @public */ export type Loading = Record; diff --git a/plugins/cost-insights/src/types/Theme.ts b/plugins/cost-insights/src/types/Theme.ts index 943bf29a12..39b4428a9f 100644 --- a/plugins/cost-insights/src/types/Theme.ts +++ b/plugins/cost-insights/src/types/Theme.ts @@ -13,15 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { BackstagePalette, BackstageTheme } from '@backstage/theme'; import { PaletteOptions } from '@material-ui/core/styles/createPalette'; -type CostInsightsTooltipOptions = { +/** @public */ +export type CostInsightsTooltipOptions = { background: string; color: string; }; -type CostInsightsPaletteAdditions = { +/** @public */ +export type CostInsightsPaletteAdditions = { blue: string; lightBlue: string; darkBlue: string; @@ -33,16 +36,20 @@ type CostInsightsPaletteAdditions = { dataViz: string[]; }; +/** @public */ export type CostInsightsPalette = BackstagePalette & CostInsightsPaletteAdditions; +/** @public */ export type CostInsightsPaletteOptions = PaletteOptions & CostInsightsPaletteAdditions; +/** @public */ export interface CostInsightsThemeOptions extends PaletteOptions { palette: CostInsightsPaletteOptions; } +/** @public */ export interface CostInsightsTheme extends BackstageTheme { palette: CostInsightsPalette; } diff --git a/plugins/cost-insights/src/types/index.ts b/plugins/cost-insights/src/types/index.ts index b836914e73..750114d3ec 100644 --- a/plugins/cost-insights/src/types/index.ts +++ b/plugins/cost-insights/src/types/index.ts @@ -35,45 +35,56 @@ import * as common from '@backstage/plugin-cost-insights-common'; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type ChangeStatistic = common.ChangeStatistic; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Cost = common.Cost; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type DateAggregation = common.DateAggregation; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Entity = common.Entity; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Group = common.Group; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Maybe = common.Maybe; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Metric = common.Metric; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type MetricData = common.MetricData; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Product = common.Product; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Project = common.Project; /** * @deprecated use the same type from `@backstage/plugin-cost-insights-common` instead + * @public */ export type Trendline = common.Trendline; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 3ba5af6c7b..8407f5350a 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -201,7 +201,6 @@ const ALLOW_WARNINGS = [ 'packages/core-components', 'plugins/catalog', 'plugins/catalog-import', - 'plugins/cost-insights', 'plugins/git-release-manager', 'plugins/github-pull-requests-board', 'plugins/jenkins', From 75a5e2948962a1f7095fac07dd11ad75dd549528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:38:51 +0200 Subject: [PATCH 183/275] github-pull-requests-board MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/github-pull-requests-board/api-report.md | 4 ---- plugins/github-pull-requests-board/src/plugin.ts | 2 ++ scripts/api-extractor.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/github-pull-requests-board/api-report.md b/plugins/github-pull-requests-board/api-report.md index 33814c76b4..1657d455b5 100644 --- a/plugins/github-pull-requests-board/api-report.md +++ b/plugins/github-pull-requests-board/api-report.md @@ -7,13 +7,9 @@ import { FunctionComponent } from 'react'; -// Warning: (ae-missing-release-tag) "EntityTeamPullRequestsCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityTeamPullRequestsCard: FunctionComponent<{}>; -// Warning: (ae-missing-release-tag) "EntityTeamPullRequestsContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityTeamPullRequestsContent: FunctionComponent<{}>; diff --git a/plugins/github-pull-requests-board/src/plugin.ts b/plugins/github-pull-requests-board/src/plugin.ts index c3ed426dec..87aea76d31 100644 --- a/plugins/github-pull-requests-board/src/plugin.ts +++ b/plugins/github-pull-requests-board/src/plugin.ts @@ -27,6 +27,7 @@ const githubPullRequestsBoardPlugin = createPlugin({ }, }); +/** @public */ export const EntityTeamPullRequestsCard = githubPullRequestsBoardPlugin.provide( createComponentExtension({ name: 'EntityTeamPullRequestsCard', @@ -39,6 +40,7 @@ export const EntityTeamPullRequestsCard = githubPullRequestsBoardPlugin.provide( }), ); +/** @public */ export const EntityTeamPullRequestsContent = githubPullRequestsBoardPlugin.provide( createRoutableExtension({ diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 8407f5350a..27b42d7bd5 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -202,7 +202,6 @@ const ALLOW_WARNINGS = [ 'plugins/catalog', 'plugins/catalog-import', 'plugins/git-release-manager', - 'plugins/github-pull-requests-board', 'plugins/jenkins', 'plugins/kubernetes', 'plugins/kubernetes-common', From 4ad7c486844a0423cb35cd58dfb6db9449b9087c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:42:12 +0200 Subject: [PATCH 184/275] kubernetes-common MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/kubernetes-common/api-report.md | 50 ------------------------- plugins/kubernetes-common/src/types.ts | 25 +++++++++++++ scripts/api-extractor.ts | 1 - 3 files changed, 25 insertions(+), 51 deletions(-) diff --git a/plugins/kubernetes-common/api-report.md b/plugins/kubernetes-common/api-report.md index f8a8c6b460..ef36d5ce28 100644 --- a/plugins/kubernetes-common/api-report.md +++ b/plugins/kubernetes-common/api-report.md @@ -18,13 +18,9 @@ import { V1ReplicaSet } from '@kubernetes/client-node'; import { V1Service } from '@kubernetes/client-node'; import { V1StatefulSet } from '@kubernetes/client-node'; -// Warning: (ae-missing-release-tag) "AuthProviderType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type AuthProviderType = 'google' | 'serviceAccount' | 'aws' | 'azure'; -// Warning: (ae-missing-release-tag) "ClientContainerStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ClientContainerStatus { // (undocumented) @@ -35,8 +31,6 @@ export interface ClientContainerStatus { memoryUsage: ClientCurrentResourceUsage; } -// Warning: (ae-missing-release-tag) "ClientCurrentResourceUsage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ClientCurrentResourceUsage { // (undocumented) @@ -47,8 +41,6 @@ export interface ClientCurrentResourceUsage { requestTotal: number | string; } -// Warning: (ae-missing-release-tag) "ClientPodStatus" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ClientPodStatus { // (undocumented) @@ -61,8 +53,6 @@ export interface ClientPodStatus { pod: V1Pod; } -// Warning: (ae-missing-release-tag) "ClusterAttributes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ClusterAttributes { dashboardApp?: string; @@ -71,8 +61,6 @@ export interface ClusterAttributes { name: string; } -// Warning: (ae-missing-release-tag) "ClusterObjects" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ClusterObjects { // (undocumented) @@ -85,8 +73,6 @@ export interface ClusterObjects { resources: FetchResponse[]; } -// Warning: (ae-missing-release-tag) "ConfigMapFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ConfigMapFetchResponse { // (undocumented) @@ -95,8 +81,6 @@ export interface ConfigMapFetchResponse { type: 'configmaps'; } -// Warning: (ae-missing-release-tag) "CronJobsFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CronJobsFetchResponse { // (undocumented) @@ -105,8 +89,6 @@ export interface CronJobsFetchResponse { type: 'cronjobs'; } -// Warning: (ae-missing-release-tag) "CustomResourceFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface CustomResourceFetchResponse { // (undocumented) @@ -115,8 +97,6 @@ export interface CustomResourceFetchResponse { type: 'customresources'; } -// Warning: (ae-missing-release-tag) "DaemonSetsFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface DaemonSetsFetchResponse { // (undocumented) @@ -125,8 +105,6 @@ export interface DaemonSetsFetchResponse { type: 'daemonsets'; } -// Warning: (ae-missing-release-tag) "DeploymentFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface DeploymentFetchResponse { // (undocumented) @@ -135,8 +113,6 @@ export interface DeploymentFetchResponse { type: 'deployments'; } -// Warning: (ae-missing-release-tag) "FetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type FetchResponse = | PodFetchResponse @@ -153,8 +129,6 @@ export type FetchResponse = | StatefulSetsFetchResponse | DaemonSetsFetchResponse; -// Warning: (ae-missing-release-tag) "HorizontalPodAutoscalersFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface HorizontalPodAutoscalersFetchResponse { // (undocumented) @@ -163,8 +137,6 @@ export interface HorizontalPodAutoscalersFetchResponse { type: 'horizontalpodautoscalers'; } -// Warning: (ae-missing-release-tag) "IngressesFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface IngressesFetchResponse { // (undocumented) @@ -173,8 +145,6 @@ export interface IngressesFetchResponse { type: 'ingresses'; } -// Warning: (ae-missing-release-tag) "JobsFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface JobsFetchResponse { // (undocumented) @@ -183,8 +153,6 @@ export interface JobsFetchResponse { type: 'jobs'; } -// Warning: (ae-missing-release-tag) "KubernetesErrorTypes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type KubernetesErrorTypes = | 'BAD_REQUEST' @@ -192,8 +160,6 @@ export type KubernetesErrorTypes = | 'SYSTEM_ERROR' | 'UNKNOWN_ERROR'; -// Warning: (ae-missing-release-tag) "KubernetesFetchError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface KubernetesFetchError { // (undocumented) @@ -204,8 +170,6 @@ export interface KubernetesFetchError { statusCode?: number; } -// Warning: (ae-missing-release-tag) "KubernetesRequestAuth" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface KubernetesRequestAuth { // (undocumented) @@ -216,8 +180,6 @@ export interface KubernetesRequestAuth { }; } -// Warning: (ae-missing-release-tag) "KubernetesRequestBody" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface KubernetesRequestBody { // (undocumented) @@ -226,8 +188,6 @@ export interface KubernetesRequestBody { entity: Entity; } -// Warning: (ae-missing-release-tag) "LimitRangeFetchReponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface LimitRangeFetchReponse { // (undocumented) @@ -236,16 +196,12 @@ export interface LimitRangeFetchReponse { type: 'limitranges'; } -// Warning: (ae-missing-release-tag) "ObjectsByEntityResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ObjectsByEntityResponse { // (undocumented) items: ClusterObjects[]; } -// Warning: (ae-missing-release-tag) "PodFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface PodFetchResponse { // (undocumented) @@ -254,8 +210,6 @@ export interface PodFetchResponse { type: 'pods'; } -// Warning: (ae-missing-release-tag) "ReplicaSetsFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ReplicaSetsFetchResponse { // (undocumented) @@ -264,8 +218,6 @@ export interface ReplicaSetsFetchResponse { type: 'replicasets'; } -// Warning: (ae-missing-release-tag) "ServiceFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ServiceFetchResponse { // (undocumented) @@ -274,8 +226,6 @@ export interface ServiceFetchResponse { type: 'services'; } -// Warning: (ae-missing-release-tag) "StatefulSetsFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface StatefulSetsFetchResponse { // (undocumented) diff --git a/plugins/kubernetes-common/src/types.ts b/plugins/kubernetes-common/src/types.ts index 53f6a5a640..830c32c32c 100644 --- a/plugins/kubernetes-common/src/types.ts +++ b/plugins/kubernetes-common/src/types.ts @@ -31,6 +31,7 @@ import { } from '@kubernetes/client-node'; import { Entity } from '@backstage/catalog-model'; +/** @public */ export interface KubernetesRequestAuth { google?: string; oidc?: { @@ -38,11 +39,13 @@ export interface KubernetesRequestAuth { }; } +/** @public */ export interface KubernetesRequestBody { auth?: KubernetesRequestAuth; entity: Entity; } +/** @public */ export interface ClusterAttributes { /** * Specifies the name of the Kubernetes cluster. @@ -81,6 +84,7 @@ export interface ClusterAttributes { dashboardParameters?: JsonObject; } +/** @public */ export interface ClusterObjects { cluster: ClusterAttributes; resources: FetchResponse[]; @@ -88,12 +92,15 @@ export interface ClusterObjects { errors: KubernetesFetchError[]; } +/** @public */ export interface ObjectsByEntityResponse { items: ClusterObjects[]; } +/** @public */ export type AuthProviderType = 'google' | 'serviceAccount' | 'aws' | 'azure'; +/** @public */ export type FetchResponse = | PodFetchResponse | ServiceFetchResponse @@ -109,95 +116,113 @@ export type FetchResponse = | StatefulSetsFetchResponse | DaemonSetsFetchResponse; +/** @public */ export interface PodFetchResponse { type: 'pods'; resources: Array; } +/** @public */ export interface ServiceFetchResponse { type: 'services'; resources: Array; } +/** @public */ export interface ConfigMapFetchResponse { type: 'configmaps'; resources: Array; } +/** @public */ export interface DeploymentFetchResponse { type: 'deployments'; resources: Array; } +/** @public */ export interface ReplicaSetsFetchResponse { type: 'replicasets'; resources: Array; } +/** @public */ export interface LimitRangeFetchReponse { type: 'limitranges'; resources: Array; } +/** @public */ export interface HorizontalPodAutoscalersFetchResponse { type: 'horizontalpodautoscalers'; resources: Array; } +/** @public */ export interface JobsFetchResponse { type: 'jobs'; resources: Array; } +/** @public */ export interface CronJobsFetchResponse { type: 'cronjobs'; resources: Array; } +/** @public */ export interface IngressesFetchResponse { type: 'ingresses'; resources: Array; } +/** @public */ export interface CustomResourceFetchResponse { type: 'customresources'; resources: Array; } +/** @public */ export interface StatefulSetsFetchResponse { type: 'statefulsets'; resources: Array; } +/** @public */ export interface DaemonSetsFetchResponse { type: 'daemonsets'; resources: Array; } +/** @public */ export interface KubernetesFetchError { errorType: KubernetesErrorTypes; statusCode?: number; resourcePath?: string; } +/** @public */ export type KubernetesErrorTypes = | 'BAD_REQUEST' | 'UNAUTHORIZED_ERROR' | 'SYSTEM_ERROR' | 'UNKNOWN_ERROR'; +/** @public */ export interface ClientCurrentResourceUsage { currentUsage: number | string; requestTotal: number | string; limitTotal: number | string; } +/** @public */ export interface ClientContainerStatus { container: string; cpuUsage: ClientCurrentResourceUsage; memoryUsage: ClientCurrentResourceUsage; } +/** @public */ export interface ClientPodStatus { pod: V1Pod; cpu: ClientCurrentResourceUsage; diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 27b42d7bd5..f18358cfcc 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -204,7 +204,6 @@ const ALLOW_WARNINGS = [ 'plugins/git-release-manager', 'plugins/jenkins', 'plugins/kubernetes', - 'plugins/kubernetes-common', ]; async function resolvePackagePath( From d669d89206224f8a0c51bb2b4df81f349f2fb3eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:45:06 +0200 Subject: [PATCH 185/275] changeset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/red-numbers-suffer.md | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .changeset/red-numbers-suffer.md diff --git a/.changeset/red-numbers-suffer.md b/.changeset/red-numbers-suffer.md new file mode 100644 index 0000000000..863a701984 --- /dev/null +++ b/.changeset/red-numbers-suffer.md @@ -0,0 +1,45 @@ +--- +'@backstage/plugin-allure': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-graphql': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-cicd-statistics': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-explore-react': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-github-pull-requests-board': patch +'@backstage/plugin-gitops-profiles': patch +'@backstage/plugin-graphql-backend': patch +'@backstage/plugin-home': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-kubernetes-common': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-newrelic-dashboard': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-search-backend-module-pg': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-xcmetrics': patch +--- + +Minor API signatures cleanup From 32fc7d3716982c2f58c954039b99f03d9af90fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 15:51:27 +0200 Subject: [PATCH 186/275] fixup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/red-numbers-suffer.md | 1 - plugins/stack-overflow/api-report.md | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.changeset/red-numbers-suffer.md b/.changeset/red-numbers-suffer.md index 863a701984..c1baae1e92 100644 --- a/.changeset/red-numbers-suffer.md +++ b/.changeset/red-numbers-suffer.md @@ -6,7 +6,6 @@ '@backstage/plugin-bitrise': patch '@backstage/plugin-catalog': patch '@backstage/plugin-catalog-graphql': patch -'@backstage/plugin-catalog-import': patch '@backstage/plugin-cicd-statistics': patch '@backstage/plugin-circleci': patch '@backstage/plugin-cloudbuild': patch diff --git a/plugins/stack-overflow/api-report.md b/plugins/stack-overflow/api-report.md index 9404c74700..81cfe1395b 100644 --- a/plugins/stack-overflow/api-report.md +++ b/plugins/stack-overflow/api-report.md @@ -6,14 +6,12 @@ /// import { BackstagePlugin } from '@backstage/core-plugin-api'; -import { ComponentRenderer } from '@backstage/plugin-home'; +import { CardExtensionProps } from '@backstage/plugin-home'; import { ReactNode } from 'react'; // @public export const HomePageStackOverflowQuestions: ( - props: ComponentRenderer & { - title?: string | undefined; - } & StackOverflowQuestionsContentProps, + props: CardExtensionProps, ) => JSX.Element; // @public From a291688bc58ace6423b92b8a2e5d1d7cf2dbc015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 16:28:04 +0200 Subject: [PATCH 187/275] Renamed the RedirectInfo type to OAuthStartResponse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/metal-crabs-wash.md | 5 +++++ plugins/auth-backend/api-report.md | 14 +++++++------- plugins/auth-backend/src/lib/oauth/types.ts | 4 ++-- .../lib/passport/PassportStrategyHelper.test.ts | 2 +- .../src/lib/passport/PassportStrategyHelper.ts | 4 ++-- .../src/providers/atlassian/provider.ts | 4 ++-- .../auth-backend/src/providers/auth0/provider.ts | 4 ++-- .../src/providers/bitbucket/provider.ts | 4 ++-- .../auth-backend/src/providers/github/provider.ts | 4 ++-- .../auth-backend/src/providers/gitlab/provider.ts | 4 ++-- .../auth-backend/src/providers/google/provider.ts | 4 ++-- plugins/auth-backend/src/providers/index.ts | 2 +- .../src/providers/microsoft/provider.ts | 4 ++-- .../auth-backend/src/providers/oauth2/provider.ts | 4 ++-- .../auth-backend/src/providers/oidc/provider.ts | 4 ++-- .../auth-backend/src/providers/okta/provider.ts | 4 ++-- .../src/providers/onelogin/provider.ts | 4 ++-- plugins/auth-backend/src/providers/types.ts | 2 +- 18 files changed, 41 insertions(+), 36 deletions(-) create mode 100644 .changeset/metal-crabs-wash.md diff --git a/.changeset/metal-crabs-wash.md b/.changeset/metal-crabs-wash.md new file mode 100644 index 0000000000..6ecb50ef67 --- /dev/null +++ b/.changeset/metal-crabs-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +Renamed the `RedirectInfo` type to `OAuthStartResponse` diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index be295f65f5..43bf2f3fa2 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -317,7 +317,7 @@ export interface OAuthHandlers { response: OAuthResponse; refreshToken?: string; }>; - start(req: OAuthStartRequest): Promise; + start(req: OAuthStartRequest): Promise; } // @public (undocumented) @@ -366,6 +366,12 @@ export type OAuthStartRequest = express.Request<{}> & { state: OAuthState; }; +// @public (undocumented) +export type OAuthStartResponse = { + url: string; + status?: number; +}; + // @public (undocumented) export type OAuthState = { nonce: string; @@ -654,12 +660,6 @@ export const providers: Readonly<{ // @public (undocumented) export const readState: (stateString: string) => OAuthState; -// @public (undocumented) -export type RedirectInfo = { - url: string; - status?: number; -}; - // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/auth-backend/src/lib/oauth/types.ts b/plugins/auth-backend/src/lib/oauth/types.ts index bfe0aaff50..e8b5282aad 100644 --- a/plugins/auth-backend/src/lib/oauth/types.ts +++ b/plugins/auth-backend/src/lib/oauth/types.ts @@ -17,7 +17,7 @@ import express from 'express'; import { Profile as PassportProfile } from 'passport'; import { BackstageSignInResult } from '@backstage/plugin-auth-node'; -import { RedirectInfo, ProfileInfo } from '../../providers/types'; +import { OAuthStartResponse, ProfileInfo } from '../../providers/types'; /** * Common options for passport.js-based OAuth providers @@ -115,7 +115,7 @@ export interface OAuthHandlers { /** * Initiate a sign in request with an auth provider. */ - start(req: OAuthStartRequest): Promise; + start(req: OAuthStartRequest): Promise; /** * Handle the redirect from the auth provider when the user has signed in. diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts index 893be26852..660b96f018 100644 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts +++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts @@ -33,7 +33,7 @@ describe('PassportStrategyHelper', () => { } describe('executeRedirectStrategy', () => { - it('should call authenticate and resolve with RedirectInfo', async () => { + it('should call authenticate and resolve with OAuthStartResponse', async () => { const mockStrategy = new MyCustomRedirectStrategy(); const spyAuthenticate = jest.spyOn(mockStrategy, 'authenticate'); const redirectStrategyPromise = executeRedirectStrategy( diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts index 6117736e21..16377f17f2 100644 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts +++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts @@ -20,7 +20,7 @@ import jwtDecoder from 'jwt-decode'; import { InternalOAuthError } from 'passport-oauth2'; import { PassportProfile } from './types'; -import { ProfileInfo, RedirectInfo } from '../../providers/types'; +import { ProfileInfo, OAuthStartResponse } from '../../providers/types'; export type PassportDoneCallback = ( err?: Error, @@ -77,7 +77,7 @@ export const executeRedirectStrategy = async ( req: express.Request, providerStrategy: passport.Strategy, options: Record, -): Promise => { +): Promise => { return new Promise(resolve => { const strategy = Object.create(providerStrategy); strategy.redirect = (url: string, status?: number) => { diff --git a/plugins/auth-backend/src/providers/atlassian/provider.ts b/plugins/auth-backend/src/providers/atlassian/provider.ts index eb6890a5a4..e02d899fb1 100644 --- a/plugins/auth-backend/src/providers/atlassian/provider.ts +++ b/plugins/auth-backend/src/providers/atlassian/provider.ts @@ -38,7 +38,7 @@ import { import { AuthHandler, AuthResolverContext, - RedirectInfo, + OAuthStartResponse, SignInResolver, } from '../types'; import express from 'express'; @@ -94,7 +94,7 @@ export class AtlassianAuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { state: encodeState(req.state), }); diff --git a/plugins/auth-backend/src/providers/auth0/provider.ts b/plugins/auth-backend/src/providers/auth0/provider.ts index a53f504f50..8e0255ebe6 100644 --- a/plugins/auth-backend/src/providers/auth0/provider.ts +++ b/plugins/auth-backend/src/providers/auth0/provider.ts @@ -37,7 +37,7 @@ import { PassportDoneCallback, } from '../../lib/passport'; import { - RedirectInfo, + OAuthStartResponse, AuthHandler, SignInResolver, AuthResolverContext, @@ -98,7 +98,7 @@ export class Auth0AuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { accessType: 'offline', prompt: 'consent', diff --git a/plugins/auth-backend/src/providers/bitbucket/provider.ts b/plugins/auth-backend/src/providers/bitbucket/provider.ts index 0bbebd2097..cfa30e9a73 100644 --- a/plugins/auth-backend/src/providers/bitbucket/provider.ts +++ b/plugins/auth-backend/src/providers/bitbucket/provider.ts @@ -39,7 +39,7 @@ import { import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; import { AuthHandler, - RedirectInfo, + OAuthStartResponse, SignInResolver, AuthResolverContext, } from '../types'; @@ -121,7 +121,7 @@ export class BitbucketAuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { accessType: 'offline', prompt: 'consent', diff --git a/plugins/auth-backend/src/providers/github/provider.ts b/plugins/auth-backend/src/providers/github/provider.ts index 4ac91516a3..7571b4a327 100644 --- a/plugins/auth-backend/src/providers/github/provider.ts +++ b/plugins/auth-backend/src/providers/github/provider.ts @@ -26,7 +26,7 @@ import { PassportDoneCallback, } from '../../lib/passport'; import { - RedirectInfo, + OAuthStartResponse, AuthHandler, SignInResolver, StateEncoder, @@ -107,7 +107,7 @@ export class GithubAuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { scope: req.scope, state: (await this.stateEncoder(req)).encodedState, diff --git a/plugins/auth-backend/src/providers/gitlab/provider.ts b/plugins/auth-backend/src/providers/gitlab/provider.ts index c24c2e128d..7f5489d391 100644 --- a/plugins/auth-backend/src/providers/gitlab/provider.ts +++ b/plugins/auth-backend/src/providers/gitlab/provider.ts @@ -25,7 +25,7 @@ import { PassportDoneCallback, } from '../../lib/passport'; import { - RedirectInfo, + OAuthStartResponse, SignInResolver, AuthHandler, AuthResolverContext, @@ -110,7 +110,7 @@ export class GitlabAuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { scope: req.scope, state: encodeState(req.state), diff --git a/plugins/auth-backend/src/providers/google/provider.ts b/plugins/auth-backend/src/providers/google/provider.ts index f60d4e9947..7689cd1a3a 100644 --- a/plugins/auth-backend/src/providers/google/provider.ts +++ b/plugins/auth-backend/src/providers/google/provider.ts @@ -39,7 +39,7 @@ import { import { AuthHandler, AuthResolverContext, - RedirectInfo, + OAuthStartResponse, SignInResolver, } from '../types'; import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; @@ -98,7 +98,7 @@ export class GoogleAuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this.strategy, { accessType: 'offline', prompt: 'consent', diff --git a/plugins/auth-backend/src/providers/index.ts b/plugins/auth-backend/src/providers/index.ts index e0860d3f78..67d3a62990 100644 --- a/plugins/auth-backend/src/providers/index.ts +++ b/plugins/auth-backend/src/providers/index.ts @@ -49,7 +49,7 @@ export type { StateEncoder, AuthResponse, ProfileInfo, - RedirectInfo, + OAuthStartResponse, } from './types'; export { prepareBackstageIdentityResponse } from './prepareBackstageIdentityResponse'; diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts index db79dba225..fd2a1529a7 100644 --- a/plugins/auth-backend/src/providers/microsoft/provider.ts +++ b/plugins/auth-backend/src/providers/microsoft/provider.ts @@ -38,7 +38,7 @@ import { } from '../../lib/passport'; import { AuthHandler, - RedirectInfo, + OAuthStartResponse, SignInResolver, AuthResolverContext, } from '../types'; @@ -97,7 +97,7 @@ export class MicrosoftAuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { scope: req.scope, state: encodeState(req.state), diff --git a/plugins/auth-backend/src/providers/oauth2/provider.ts b/plugins/auth-backend/src/providers/oauth2/provider.ts index 6fa649c421..3e7720b14a 100644 --- a/plugins/auth-backend/src/providers/oauth2/provider.ts +++ b/plugins/auth-backend/src/providers/oauth2/provider.ts @@ -39,7 +39,7 @@ import { import { AuthHandler, AuthResolverContext, - RedirectInfo, + OAuthStartResponse, SignInResolver, } from '../types'; import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; @@ -114,7 +114,7 @@ export class OAuth2AuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { accessType: 'offline', prompt: 'consent', diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts index eb963a3711..bce8ba843b 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.ts @@ -40,7 +40,7 @@ import { import { AuthHandler, AuthResolverContext, - RedirectInfo, + OAuthStartResponse, SignInResolver, } from '../types'; import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; @@ -91,7 +91,7 @@ export class OidcAuthProvider implements OAuthHandlers { this.resolverContext = options.resolverContext; } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { const { strategy } = await this.implementation; const options: Record = { scope: req.scope || this.scope || 'openid profile email', diff --git a/plugins/auth-backend/src/providers/okta/provider.ts b/plugins/auth-backend/src/providers/okta/provider.ts index cb686f17e9..05e0451bdb 100644 --- a/plugins/auth-backend/src/providers/okta/provider.ts +++ b/plugins/auth-backend/src/providers/okta/provider.ts @@ -38,7 +38,7 @@ import { } from '../../lib/passport'; import { AuthHandler, - RedirectInfo, + OAuthStartResponse, SignInResolver, AuthResolverContext, } from '../types'; @@ -125,7 +125,7 @@ export class OktaAuthProvider implements OAuthHandlers { ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this.strategy, { accessType: 'offline', prompt: 'consent', diff --git a/plugins/auth-backend/src/providers/onelogin/provider.ts b/plugins/auth-backend/src/providers/onelogin/provider.ts index 59b57b3851..ac636f92cc 100644 --- a/plugins/auth-backend/src/providers/onelogin/provider.ts +++ b/plugins/auth-backend/src/providers/onelogin/provider.ts @@ -37,7 +37,7 @@ import { PassportDoneCallback, } from '../../lib/passport'; import { - RedirectInfo, + OAuthStartResponse, AuthHandler, SignInResolver, AuthResolverContext, @@ -95,7 +95,7 @@ export class OneLoginProvider implements OAuthHandlers { }, ); } - async start(req: OAuthStartRequest): Promise { + async start(req: OAuthStartRequest): Promise { return await executeRedirectStrategy(req, this._strategy, { accessType: 'offline', prompt: 'consent', diff --git a/plugins/auth-backend/src/providers/types.ts b/plugins/auth-backend/src/providers/types.ts index f0f94f1936..574afade79 100644 --- a/plugins/auth-backend/src/providers/types.ts +++ b/plugins/auth-backend/src/providers/types.ts @@ -127,7 +127,7 @@ export type AuthProviderConfig = { }; /** @public */ -export type RedirectInfo = { +export type OAuthStartResponse = { /** * URL to redirect to */ From 6c905ee2278609276fc2dd1c56e5bcc4fab77c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 19 Aug 2022 16:54:51 +0200 Subject: [PATCH 188/275] ignore CatalogInputPluginOptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog/api-report.md | 5 ----- plugins/catalog/src/index.ts | 1 - plugins/catalog/src/options.ts | 2 +- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index f3bec2ba43..377b62a1e6 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -73,11 +73,6 @@ export const CatalogEntityPage: () => JSX.Element; // @public (undocumented) export const CatalogIndexPage: (props: DefaultCatalogPageProps) => JSX.Element; -// @public (undocumented) -export type CatalogInputPluginOptions = { - createButtonTitle: string; -}; - // @public (undocumented) export function CatalogKindHeader(props: CatalogKindHeaderProps): JSX.Element; diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index a69d4004a1..886039e329 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -37,7 +37,6 @@ export * from './components/EntityProcessingErrorsPanel'; export * from './components/EntitySwitch'; export * from './components/FilteredEntityLayout'; export * from './overridableComponents'; -export type { CatalogInputPluginOptions } from './options'; export { CatalogEntityPage, CatalogIndexPage, diff --git a/plugins/catalog/src/options.ts b/plugins/catalog/src/options.ts index 4061f512ac..bb248c16b6 100644 --- a/plugins/catalog/src/options.ts +++ b/plugins/catalog/src/options.ts @@ -20,7 +20,7 @@ export type CatalogPluginOptions = { createButtonTitle: string; }; -/** @public */ +/** @ignore */ export type CatalogInputPluginOptions = { createButtonTitle: string; }; From ddb3d6bc6e5fe744c8c22115ba207badfe979a05 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Fri, 19 Aug 2022 17:34:06 +0200 Subject: [PATCH 189/275] Update two-planets-provide.md Signed-off-by: Ben Lambert --- .changeset/two-planets-provide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/two-planets-provide.md b/.changeset/two-planets-provide.md index d794a90dbf..920eebc01d 100644 --- a/.changeset/two-planets-provide.md +++ b/.changeset/two-planets-provide.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-scaffolder': major +'@backstage/plugin-scaffolder': minor --- -Implementing review step for scaffolder/next +Implementing review step for the scaffolder under `create/next` From b5b24f7bf8b40a4efa9d8b54255f3ae631a48b57 Mon Sep 17 00:00:00 2001 From: Daniel Dias Branco Arthaud Date: Thu, 18 Aug 2022 22:12:01 -0300 Subject: [PATCH 190/275] test with mysql8 Signed-off-by: Daniel Dias Branco Arthaud --- packages/backend-tasks/src/tasks/util.test.ts | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/packages/backend-tasks/src/tasks/util.test.ts b/packages/backend-tasks/src/tasks/util.test.ts index 614de8c6c8..ceeeba14d6 100644 --- a/packages/backend-tasks/src/tasks/util.test.ts +++ b/packages/backend-tasks/src/tasks/util.test.ts @@ -14,9 +14,16 @@ * limitations under the License. */ +import knexFactory, { Knex } from 'knex'; import { Duration } from 'luxon'; import { AbortController } from 'node-abort-controller'; -import { delegateAbortController, sleep, validateId } from './util'; +import { delegateAbortController, nowPlus, sleep, validateId } from './util'; + +class KnexBuilder { + public build(client: string): Knex { + return knexFactory({ client }); + } +} describe('util', () => { describe('validateId', () => { @@ -73,4 +80,35 @@ describe('util', () => { expect(child.signal.aborted).toBe(true); }); }); + + describe('nowPlus', () => { + describe('without duration', () => { + const databases = [ + { client: 'sqlite3', expected: 'CURRENT_TIMESTAMP' }, + { client: 'mysql2', expected: 'CURRENT_TIMESTAMP' }, + { client: 'pg', expected: 'CURRENT_TIMESTAMP' }, + ]; + + it.each(databases)('for client $client', ({ client, expected }) => { + const knex = new KnexBuilder().build(client); + const result = nowPlus(undefined, knex); + + expect(result.toString()).toBe(expected); + }); + }); + describe('With duration', () => { + const databases = [ + { client: 'sqlite3', expected: "datetime('now', '20 seconds')" }, + { client: 'mysql2', expected: 'now() + interval 20 second' }, + { client: 'pg', expected: "now() + interval '20 seconds'" }, + ]; + it.each(databases)('for client $client', ({ client, expected }) => { + const duration = Duration.fromObject({ seconds: 20 }); + const knex = new KnexBuilder().build(client); + const result = nowPlus(duration, knex); + + expect(result.toString()).toBe(expected); + }); + }); + }); }); From c20b71483186f98f080d5705bbca970ef4fba690 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 20:49:20 +0000 Subject: [PATCH 191/275] fix(deps): update dependency aws-sdk to v2.1199.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2ffca85199..a24edf9341 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8982,9 +8982,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: - version "2.1198.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1198.0.tgz#9fc8aab80c45e80a21e5e7e88d8e89526ff5c413" - integrity sha512-blFAqK+6N1iKDseAlTwEwpfh3YdCluOwuo/Glv6+A5dvcq78/kqYB+haND8rXL1Esg4BiqVtafHp35FuwQzTTQ== + version "2.1199.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1199.0.tgz#1279a2086c34232a450f032543fd43e98e3d8232" + integrity sha512-N51EMTCMsiVAJDSKCDTMUheLBlPZ7/c/qyCMGirdoF64/JU+gvZ/u+UqkYPhK7XE80b0GqTj676rtp9OkU1kyg== dependencies: buffer "4.9.2" events "1.1.1" From dd810c6e01d21437d47f877e900b6db5bbc2b543 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 21:35:35 +0000 Subject: [PATCH 192/275] fix(deps): update dependency google-auth-library to v8.3.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a24edf9341..588d607636 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14466,9 +14466,9 @@ globby@^7.1.1: slash "^1.0.0" google-auth-library@^8.0.0, google-auth-library@^8.0.1, google-auth-library@^8.0.2: - version "8.2.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.2.0.tgz#36d93e42f9bc8856ac2e69778b2b7a1e2aa16217" - integrity sha512-wCWs44jLT3cbzONVk2NKK1sfWaKCqzR21cudG3r9tV53/DC/wImxEr7HK5OBlEU5Q1iepZsrdFOxvzmC0M/YRQ== + version "8.3.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.3.0.tgz#9286a613ee089f1d1728c07b9a302a22acf2dc2a" + integrity sha512-rXasaUScggvyD5ELpQC7SIOUOdqyOIifCK9TRDOLFEcuw1JxuyewKAwDs2QiKzMf8uLa0L360W0bVlV+sJDc8g== dependencies: arrify "^2.0.0" base64-js "^1.3.0" From d4dfa08a48ed97bcf44c588a08f0bfbd8ea455ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 22:25:01 +0000 Subject: [PATCH 193/275] fix(deps): update dependency eslint-plugin-jest to v26.8.4 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 588d607636..f3ee336ab1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12808,9 +12808,9 @@ eslint-plugin-import@^2.25.4: tsconfig-paths "^3.14.1" eslint-plugin-jest@^26.1.2: - version "26.8.3" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.3.tgz#f5d9bb162636491c8f6f0cd2743fe67c86569338" - integrity sha512-2roWu1MkEiihQ/qEszPPoaoqVI1x2D8Jtadk5AmoXTdEeNVPMu01Dtz7jIuTOAmdW3L+tSkPZOtEtQroYJDt0A== + version "26.8.4" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.4.tgz#d9a894af697831ad551f7e01247e4dfbd8c689bd" + integrity sha512-+waIVSv2742wq7Y06jXikzRL5/wG+dDccmMnsLHjjwPDeccwbVQ7xpFoPCbd0k8qed/N2LSajjmBsw3D1C/xAQ== dependencies: "@typescript-eslint/utils" "^5.10.0" From 48f56fa69bc73cabba4b1968cefeb6b291d3e15b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Aug 2022 01:43:41 +0000 Subject: [PATCH 194/275] chore(deps): update dependency @types/node to v16.11.51 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f3ee336ab1..3516fbd7c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7258,9 +7258,9 @@ integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== "@types/node@^16.0.0", "@types/node@^16.11.26", "@types/node@^16.9.2": - version "16.11.49" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.49.tgz#560b1ea774b61e19a89c3fc72d2dcaa3863f38b2" - integrity sha512-Abq9fBviLV93OiXMu+f6r0elxCzRwc0RC5f99cU892uBITL44pTvgvEqlRlPRi8EGcO1z7Cp8A4d0s/p3J/+Nw== + version "16.11.51" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.51.tgz#bb2114485e6fc1460f630702fb992007d120e928" + integrity sha512-h6p1A77pHBDdOcI9y6Wfh9iRGa8lMUZMk2ebHJTNTtRwgbQzgemZow6PW7+Xs7Z0r0IQFY1+iRlcNAkRrf53nA== "@types/normalize-package-data@^2.4.0": version "2.4.1" From 492cbba296e33a5ab9c53732132eeaaba0f436d8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Aug 2022 23:05:14 +0000 Subject: [PATCH 195/275] fix(deps): update dependency eslint-plugin-jest to v26.8.5 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3516fbd7c2..5dfd460654 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12808,9 +12808,9 @@ eslint-plugin-import@^2.25.4: tsconfig-paths "^3.14.1" eslint-plugin-jest@^26.1.2: - version "26.8.4" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.4.tgz#d9a894af697831ad551f7e01247e4dfbd8c689bd" - integrity sha512-+waIVSv2742wq7Y06jXikzRL5/wG+dDccmMnsLHjjwPDeccwbVQ7xpFoPCbd0k8qed/N2LSajjmBsw3D1C/xAQ== + version "26.8.5" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.5.tgz#ef75ea53a95177313ffae9741a1cfe75a88e1e1d" + integrity sha512-DEaimuVhah/fx6jDkaP4oEPhH6VLr9skpZxYqbbmfeYvXzjos3AX61NpyMvq4aB4x6XJ3rsu/zcJfg0z0nytfw== dependencies: "@typescript-eslint/utils" "^5.10.0" From 9097278df273799977e90ed43a69c432b77bfcde Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Aug 2022 23:09:10 +0000 Subject: [PATCH 196/275] fix(deps): update dependency json-schema-library to v7 Signed-off-by: Renovate Bot --- .changeset/renovate-7d3b357.md | 5 +++++ plugins/scaffolder/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/renovate-7d3b357.md diff --git a/.changeset/renovate-7d3b357.md b/.changeset/renovate-7d3b357.md new file mode 100644 index 0000000000..bdb86d12c2 --- /dev/null +++ b/.changeset/renovate-7d3b357.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Updated dependency `json-schema-library` to `^7.0.0`. diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 52be3be8a4..2aa9fd8c9b 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -65,7 +65,7 @@ "humanize-duration": "^3.25.1", "immer": "^9.0.1", "json-schema": "^0.4.0", - "json-schema-library": "^6.0.0", + "json-schema-library": "^7.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "qs": "^6.9.4", diff --git a/yarn.lock b/yarn.lock index 3516fbd7c2..c1304eb594 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17014,10 +17014,10 @@ json-schema-compare@^0.2.2: dependencies: lodash "^4.17.4" -json-schema-library@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/json-schema-library/-/json-schema-library-6.1.0.tgz#dc811698dcc0364d869dc5dfc509acab8cc63de3" - integrity sha512-Ql7sz3sdGyDeyRygbhcPs/iBebarA7PgTa1gLMmx54u64kC1IpCiNar4bgw3c02ReElfZ43d/t5eKX33r1MD2w== +json-schema-library@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/json-schema-library/-/json-schema-library-7.0.0.tgz#6230a4efba33fe32f9f202298be49c22f981f88f" + integrity sha512-MO3MwDOVhAZU+7k2EZc5Rw5XijdLFZi4T/l7Nhu7HIoopp44JCmCsXD/p73umZhgj3PWhdv3ZqZSukxcvcXhxQ== dependencies: deepmerge "^4.2.2" fast-deep-equal "^3.1.3" From 2a47a5cff1b004c2cf7375e500426aa7d424278b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Aug 2022 21:23:46 +0000 Subject: [PATCH 197/275] chore(deps): update dependency @types/node to v16.11.52 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5dfd460654..d38b848801 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7258,9 +7258,9 @@ integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== "@types/node@^16.0.0", "@types/node@^16.11.26", "@types/node@^16.9.2": - version "16.11.51" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.51.tgz#bb2114485e6fc1460f630702fb992007d120e928" - integrity sha512-h6p1A77pHBDdOcI9y6Wfh9iRGa8lMUZMk2ebHJTNTtRwgbQzgemZow6PW7+Xs7Z0r0IQFY1+iRlcNAkRrf53nA== + version "16.11.52" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.52.tgz#d797437435455f237800c171d05639f0335c37b9" + integrity sha512-GnstYouCa9kbYokBCWEVrszJ1P2rGAQpKrqACHKuixkaT8XGu8nsqHvEUIGqDs5vwtsJ7LrYqnPDKRD1V+M39A== "@types/normalize-package-data@^2.4.0": version "2.4.1" From 753c4ae1d2a06af7965e9c0779d3d559b3a372ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Aug 2022 21:24:38 +0000 Subject: [PATCH 198/275] fix(deps): update dependency eslint-plugin-jest to v26.8.6 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5dfd460654..3054d890b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12808,9 +12808,9 @@ eslint-plugin-import@^2.25.4: tsconfig-paths "^3.14.1" eslint-plugin-jest@^26.1.2: - version "26.8.5" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.5.tgz#ef75ea53a95177313ffae9741a1cfe75a88e1e1d" - integrity sha512-DEaimuVhah/fx6jDkaP4oEPhH6VLr9skpZxYqbbmfeYvXzjos3AX61NpyMvq4aB4x6XJ3rsu/zcJfg0z0nytfw== + version "26.8.7" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.7.tgz#f38f067d0a69483d64578eb43508ca7b29c8a4b7" + integrity sha512-nJJVv3VY6ZZvJGDMC8h1jN/TIGT4We1JkNn1lvstPURicr/eZPVnlFULQ4W2qL9ByCuCr1hPmlBOc2aZ1ktw4Q== dependencies: "@typescript-eslint/utils" "^5.10.0" From 97c2511666803d1d3b9b9e97e38eb1c440acf27b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Aug 2022 21:25:42 +0000 Subject: [PATCH 199/275] fix(deps): update dependency marked to v4.0.19 Signed-off-by: Renovate Bot --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5dfd460654..6753a502da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7144,9 +7144,9 @@ integrity sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw== "@types/marked@^4.0.0": - version "4.0.5" - resolved "https://registry.npmjs.org/@types/marked/-/marked-4.0.5.tgz#3e900fa331a9b1a98f7a8a50f0f39b4bf2b6469f" - integrity sha512-jMN2moJ+lSf1VZXQo3VXeMCjoXuciVONig8+U0YNBop5aBvQw4qkolx1Nzn1i0T8L2l9IZ3jju6bS1pPwlaY1w== + version "4.0.6" + resolved "https://registry.npmjs.org/@types/marked/-/marked-4.0.6.tgz#9ca544c1057f3c8b3f649b5e8e56d9241e3ca22d" + integrity sha512-ITAVUzsnVbhy5afxhs4PPPbrv2hKVEDH5BhhaQNQlVG0UNu+9A18XSdYr53nBdHZ0ADEQLl+ciOjXbs7eHdiQQ== "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.10" @@ -18280,9 +18280,9 @@ markdown-table@^3.0.0: integrity sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A== marked@^4.0.14: - version "4.0.18" - resolved "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz#cd0ac54b2e5610cfb90e8fd46ccaa8292c9ed569" - integrity sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw== + version "4.0.19" + resolved "https://registry.npmjs.org/marked/-/marked-4.0.19.tgz#d36198d1ac1255525153c351c68c75bc1d7aee46" + integrity sha512-rgQF/OxOiLcvgUAj1Q1tAf4Bgxn5h5JZTp04Fx4XUkVhs7B+7YA9JEWJhJpoO8eJt8MkZMwqLCNeNqj1bCREZQ== match-sorter@^6.0.2: version "6.3.1" From 1b66ad8c3b975966fe5ee54df146e1b727ae4c20 Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Mon, 22 Aug 2022 08:38:04 +1000 Subject: [PATCH 200/275] review comments Signed-off-by: Tyler Davis --- plugins/auth-backend/api-report.md | 2 +- .../src/providers/cloudflare-access/provider.ts | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index 687852f786..d4472504a9 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -204,7 +204,7 @@ export type CloudflareAccessResult = { claims: CloudflareAccessClaims; cfIdentity: CloudflareAccessIdentityProfile; expiresInSeconds?: number; - jwt: string; + token: string; }; // @public diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts index 38205c9cff..c2cf8b6158 100644 --- a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts @@ -153,7 +153,7 @@ export type CloudflareAccessResult = { claims: CloudflareAccessClaims; cfIdentity: CloudflareAccessIdentityProfile; expiresInSeconds?: number; - jwt: string; + token: string; }; /** @@ -263,7 +263,11 @@ export class CloudflareAccessAuthProvider implements AuthProviderRouteHandlers { const sub = verifyResult.payload.sub; const cfAccessResultStr = await this.cache?.get(`${CACHE_PREFIX}/${sub}`); if (typeof cfAccessResultStr === 'string') { - return JSON.parse(cfAccessResultStr) as CloudflareAccessResult; + const result = JSON.parse(cfAccessResultStr) as CloudflareAccessResult; + return { + ...result, + token: jwt, + } } const claims = verifyResult.payload as CloudflareAccessClaims; // Builds a passport profile from JWT claims first @@ -274,14 +278,16 @@ export class CloudflareAccessAuthProvider implements AuthProviderRouteHandlers { const cfIdentity = await this.getIdentityProfile(jwt); // Stores a stringified JSON object in cfaccess provider cache only when // we complete all steps - const cfAccessResult: CloudflareAccessResult = { + const cfAccessResult = { claims, cfIdentity, expiresInSeconds: claims.exp - claims.iat, - jwt, }; this.cache?.set(`${CACHE_PREFIX}/${sub}`, JSON.stringify(cfAccessResult)); - return cfAccessResult; + return { + ...cfAccessResult, + token: jwt, + }; } catch (err) { throw new ForwardedError( 'Failed to populate access identity information', From 477d05d9c749c4e824ffa08f8be3b3572dfab94b Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Mon, 22 Aug 2022 09:08:46 +1000 Subject: [PATCH 201/275] prettier Signed-off-by: Tyler Davis --- .../auth-backend/src/providers/cloudflare-access/provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts index c2cf8b6158..f7cb7c7283 100644 --- a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts @@ -267,7 +267,7 @@ export class CloudflareAccessAuthProvider implements AuthProviderRouteHandlers { return { ...result, token: jwt, - } + }; } const claims = verifyResult.payload as CloudflareAccessClaims; // Builds a passport profile from JWT claims first From bf5e9030ebd72d165c6abb2bc751c993957b2989 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 02:27:02 +0000 Subject: [PATCH 202/275] chore(deps): update dependency msw to ^0.45.0 Signed-off-by: Renovate Bot --- .changeset/renovate-c98c336.md | 108 ++++++++++++++++++ packages/backend-common/package.json | 2 +- packages/backend-test-utils/package.json | 2 +- packages/catalog-client/package.json | 2 +- packages/cli/package.json | 2 +- packages/config-loader/package.json | 2 +- packages/core-app-api/package.json | 2 +- packages/core-components/package.json | 2 +- packages/core-plugin-api/package.json | 2 +- packages/integration-react/package.json | 2 +- packages/integration/package.json | 2 +- packages/release-manifests/package.json | 2 +- packages/test-utils/package.json | 2 +- plugins/adr-backend/package.json | 2 +- plugins/adr/package.json | 2 +- plugins/airbrake-backend/package.json | 2 +- plugins/airbrake/package.json | 2 +- plugins/allure/package.json | 2 +- plugins/analytics-module-ga/package.json | 2 +- plugins/apache-airflow/package.json | 2 +- plugins/api-docs/package.json | 2 +- plugins/apollo-explorer/package.json | 2 +- plugins/app-backend/package.json | 2 +- plugins/auth-backend/package.json | 2 +- plugins/auth-node/package.json | 2 +- plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/package.json | 2 +- plugins/badges/package.json | 2 +- plugins/bitbucket-cloud-common/package.json | 2 +- plugins/bitrise/package.json | 2 +- .../catalog-backend-module-azure/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- plugins/catalog-backend/package.json | 2 +- plugins/catalog-graphql/package.json | 2 +- plugins/catalog-import/package.json | 2 +- plugins/circleci/package.json | 2 +- plugins/cloudbuild/package.json | 2 +- plugins/code-climate/package.json | 2 +- plugins/code-coverage-backend/package.json | 2 +- plugins/code-coverage/package.json | 2 +- plugins/codescene/package.json | 2 +- plugins/config-schema/package.json | 2 +- plugins/cost-insights/package.json | 2 +- plugins/dynatrace/package.json | 2 +- .../example-todo-list-backend/package.json | 2 +- plugins/example-todo-list-common/package.json | 2 +- plugins/example-todo-list/package.json | 2 +- plugins/explore-react/package.json | 2 +- plugins/explore/package.json | 2 +- plugins/firehydrant/package.json | 2 +- plugins/fossa/package.json | 2 +- plugins/gcalendar/package.json | 2 +- plugins/gcp-projects/package.json | 2 +- plugins/git-release-manager/package.json | 2 +- plugins/github-actions/package.json | 2 +- plugins/github-deployments/package.json | 2 +- plugins/github-issues/package.json | 2 +- .../github-pull-requests-board/package.json | 2 +- plugins/gitops-profiles/package.json | 2 +- plugins/gocd/package.json | 2 +- plugins/graphiql/package.json | 2 +- plugins/graphql-backend/package.json | 2 +- plugins/home/package.json | 2 +- plugins/ilert/package.json | 2 +- plugins/jenkins-backend/package.json | 2 +- plugins/jenkins/package.json | 2 +- plugins/kafka/package.json | 2 +- plugins/kubernetes/package.json | 2 +- plugins/lighthouse/package.json | 2 +- plugins/newrelic/package.json | 2 +- plugins/org/package.json | 2 +- plugins/pagerduty/package.json | 2 +- plugins/periskop-backend/package.json | 2 +- plugins/periskop/package.json | 2 +- plugins/permission-backend/package.json | 2 +- plugins/permission-common/package.json | 2 +- plugins/permission-node/package.json | 2 +- plugins/proxy-backend/package.json | 2 +- plugins/rollbar-backend/package.json | 2 +- plugins/rollbar/package.json | 2 +- .../package.json | 2 +- plugins/scaffolder-backend/package.json | 2 +- plugins/scaffolder/package.json | 2 +- plugins/search/package.json | 2 +- plugins/sentry/package.json | 2 +- plugins/shortcuts/package.json | 2 +- plugins/sonarqube-backend/package.json | 2 +- plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/package.json | 2 +- plugins/stack-overflow/package.json | 2 +- plugins/tech-insights/package.json | 2 +- plugins/tech-radar/package.json | 2 +- .../techdocs-addons-test-utils/package.json | 2 +- plugins/techdocs-backend/package.json | 2 +- .../package.json | 2 +- plugins/techdocs/package.json | 2 +- plugins/todo-backend/package.json | 2 +- plugins/todo/package.json | 2 +- plugins/user-settings/package.json | 2 +- plugins/vault-backend/package.json | 2 +- plugins/vault/package.json | 2 +- plugins/xcmetrics/package.json | 2 +- yarn.lock | 47 +------- 109 files changed, 219 insertions(+), 150 deletions(-) create mode 100644 .changeset/renovate-c98c336.md diff --git a/.changeset/renovate-c98c336.md b/.changeset/renovate-c98c336.md new file mode 100644 index 0000000000..b2139cfe20 --- /dev/null +++ b/.changeset/renovate-c98c336.md @@ -0,0 +1,108 @@ +--- +'@backstage/backend-common': patch +'@backstage/backend-test-utils': patch +'@backstage/catalog-client': patch +'@backstage/cli': patch +'@backstage/config-loader': patch +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/integration-react': patch +'@backstage/integration': patch +'@backstage/release-manifests': patch +'@backstage/test-utils': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-adr': patch +'@backstage/plugin-airbrake-backend': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-apollo-explorer': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-node': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bitbucket-cloud-common': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog-backend-module-azure': patch +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch +'@backstage/plugin-catalog-backend-module-bitbucket-server': patch +'@backstage/plugin-catalog-backend-module-bitbucket': patch +'@backstage/plugin-catalog-backend-module-gerrit': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-graphql': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-explore-react': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-github-issues': patch +'@backstage/plugin-github-pull-requests-board': patch +'@backstage/plugin-gitops-profiles': patch +'@backstage/plugin-gocd': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-graphql-backend': patch +'@backstage/plugin-home': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-kafka': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-org': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-periskop-backend': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-permission-common': patch +'@backstage/plugin-permission-node': patch +'@backstage/plugin-proxy-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-search': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-techdocs-addons-test-utils': patch +'@backstage/plugin-techdocs-backend': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-todo-backend': patch +'@backstage/plugin-todo': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-vault': patch +'@backstage/plugin-xcmetrics': patch +--- + +Updated dependency `msw` to `^0.45.0`. diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index ed84bec016..7cdedf0c21 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -112,7 +112,7 @@ "better-sqlite3": "^7.5.0", "http-errors": "^2.0.0", "mock-fs": "^5.1.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "mysql2": "^2.2.5", "recursive-readdir": "^2.2.2", "supertest": "^6.1.3" diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 31576ce77b..28baf725bd 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -42,7 +42,7 @@ "@backstage/config": "^1.0.1", "better-sqlite3": "^7.5.0", "knex": "^2.0.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "mysql2": "^2.2.5", "pg": "^8.3.0", "testcontainers": "^8.1.2", diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index 448e5cfb83..e8e98d9fd0 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -40,7 +40,7 @@ "devDependencies": { "@backstage/cli": "^0.18.1-next.0", "@types/jest": "^26.0.7", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/packages/cli/package.json b/packages/cli/package.json index 2dd77778b5..34987bd19b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -152,7 +152,7 @@ "@types/yarnpkg__lockfile": "^1.1.4", "del": "^6.0.0", "mock-fs": "^5.1.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "nodemon": "^2.0.2", "ts-node": "^10.0.0" }, diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 3a0fd87b4a..671e304199 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -57,7 +57,7 @@ "@types/node": "^16.11.26", "@types/yup": "^0.29.13", "mock-fs": "^5.1.0", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index d8586a7985..1fccec666d 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -59,7 +59,7 @@ "@types/node": "^16.11.26", "@types/zen-observable": "^0.8.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 7a43e27290..7b59f8cfd6 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -101,7 +101,7 @@ "@types/react-window": "^1.8.5", "@types/zen-observable": "^0.8.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index ab0136d1f1..573f74d864 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -59,7 +59,7 @@ "@types/prop-types": "^15.7.3", "@types/zen-observable": "^0.8.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 999a8a6031..a75d63725b 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -46,7 +46,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0", + "msw": "^0.45.0", "cross-fetch": "^3.1.5" }, "files": [ diff --git a/packages/integration/package.json b/packages/integration/package.json index 720cdd163d..31b4bbf5f6 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -48,7 +48,7 @@ "@backstage/test-utils": "^1.1.3", "@types/jest": "^26.0.7", "@types/luxon": "^3.0.0", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index 330f89b5ac..68eef91636 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -37,7 +37,7 @@ }, "devDependencies": { "@backstage/test-utils": "^1.1.3-next.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "@types/jest": "^26.0.7", "@types/node": "^16.0.0" }, diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 0ee76a55ab..4a42052d7a 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -58,7 +58,7 @@ "@backstage/cli": "^0.18.1", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 0ecc3471c4..08bc593a60 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -48,7 +48,7 @@ "@types/marked": "^4.0.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/adr/package.json b/plugins/adr/package.json index e6010addd8..bbbc5b1c34 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -56,7 +56,7 @@ "@types/jest": "*", "@types/node": "*", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index d484e33ad1..e808c65371 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -37,7 +37,7 @@ "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index d27b1bb0ae..6c0e69ce4d 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -51,7 +51,7 @@ "@types/node": "^16.11.26", "@types/object-hash": "^2.2.1", "cross-fetch": "^3.1.5", - "msw": "^0.44.0", + "msw": "^0.45.0", "react-router": "6.0.0-beta.0" }, "files": [ diff --git a/plugins/allure/package.json b/plugins/allure/package.json index b79a1cee95..7aed659e1d 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -50,7 +50,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 4f9927585b..6254c436d7 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -48,7 +48,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 7625ff730c..1c8a532a9c 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -45,7 +45,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 8e2b400f91..75d2802de3 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -68,7 +68,7 @@ "@types/node": "^16.11.26", "@types/swagger-ui-react": "^4.1.1", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 50e66504c6..b860e61900 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -45,7 +45,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "*", "@types/node": "*", - "msw": "^0.43.0", + "msw": "^0.45.0", "cross-fetch": "^3.1.5" }, "files": [ diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 4d862f02c0..7ad2b50c52 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -55,7 +55,7 @@ "@backstage/types": "^1.0.0", "@types/supertest": "^2.0.8", "mock-fs": "^5.1.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 4628669c78..3c4b8c3a99 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -88,7 +88,7 @@ "@types/passport-saml": "^1.1.3", "@types/passport-strategy": "^0.2.35", "@types/xml2js": "^0.4.7", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 0a5bf2dc19..2fd4f470c5 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -33,7 +33,7 @@ "devDependencies": { "@backstage/cli": "^0.18.1", "lodash": "^4.17.21", - "msw": "^0.44.0", + "msw": "^0.45.0", "uuid": "^8.0.0" }, "files": [ diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 467a3f7e5b..bb37fe92be 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -38,7 +38,7 @@ "@backstage/cli": "^0.18.1", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index 457cc008a0..af2e47532f 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -59,7 +59,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 0399835530..522b860c47 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -56,7 +56,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index 5ae5ea33f5..c2c8534013 100644 --- a/plugins/bitbucket-cloud-common/package.json +++ b/plugins/bitbucket-cloud-common/package.json @@ -34,7 +34,7 @@ "devDependencies": { "@backstage/cli": "^0.18.1", "@openapitools/openapi-generator-cli": "^2.4.26", - "msw": "^0.44.0", + "msw": "^0.45.0", "ts-morph": "^15.0.0" }, "files": [ diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 9045bdd64f..7daf3c48fb 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -53,7 +53,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "@types/recharts": "^1.8.15", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 3c76cc870f..9cd034bc51 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -42,7 +42,7 @@ "@backstage/plugin-catalog-backend": "^1.3.1", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", - "msw": "^0.44.0", + "msw": "^0.45.0", "uuid": "^8.0.0", "node-fetch": "^2.6.7", "winston": "^3.2.1" diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index d335b06b1a..83a33bc23d 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -45,7 +45,7 @@ "@backstage/backend-common": "^0.15.0", "@backstage/backend-test-utils": "^0.1.27", "@backstage/cli": "^0.18.1", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 02c16f0a12..d3ffc0a946 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@backstage/backend-test-utils": "^0.1.27", "@backstage/cli": "^0.18.1", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index 92f29ef6f1..e67d1267f4 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -42,7 +42,7 @@ "@backstage/plugin-catalog-backend": "^1.3.1", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", - "msw": "^0.44.0", + "msw": "^0.45.0", "node-fetch": "^2.6.7", "winston": "^3.2.1" }, diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 8a36c90796..b068709b96 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -36,7 +36,7 @@ "@backstage/integration": "^1.3.0", "@backstage/plugin-catalog-backend": "^1.3.1", "fs-extra": "10.1.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "node-fetch": "^2.6.7", "uuid": "^8.0.0", "winston": "^3.2.1" diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index a0b7f10833..3f6c5b3e57 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -43,7 +43,7 @@ "@backstage/types": "^1.0.0", "@octokit/graphql": "^5.0.0", "lodash": "^4.17.21", - "msw": "^0.44.0", + "msw": "^0.45.0", "node-fetch": "^2.6.7", "uuid": "^8.0.0", "winston": "^3.2.1" diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index a5f9259764..d06cc6f429 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -42,7 +42,7 @@ "@backstage/plugin-catalog-backend": "^1.3.1", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", - "msw": "^0.44.0", + "msw": "^0.45.0", "node-fetch": "^2.6.7", "winston": "^3.2.1", "uuid": "^8.0.0" diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 383dd42fcf..c12f1bfaf5 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -52,7 +52,7 @@ "@backstage/backend-test-utils": "^0.1.27", "@backstage/cli": "^0.18.1", "@types/lodash": "^4.14.151", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 45e447efe8..e537678bde 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -80,7 +80,7 @@ "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "better-sqlite3": "^7.5.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3", "wait-for-expect": "^3.0.2", "luxon": "^3.0.0" diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 25ba1cb492..533d07ac1e 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -53,7 +53,7 @@ "@graphql-codegen/typescript": "^2.4.2", "@graphql-codegen/typescript-resolvers": "^2.4.3", "@graphql-tools/schema": "^9.0.0", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 006decf867..63120c05b0 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -70,7 +70,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index d26df28bce..c1ab1d2141 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -66,7 +66,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 570cebfbb2..f55b942543 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -62,7 +62,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 669f21cb88..70b990943e 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -51,7 +51,7 @@ "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 34c75f45ed..0d03994a92 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -42,7 +42,7 @@ "@backstage/cli": "^0.18.1", "@types/express-xml-bodyparser": "^0.3.2", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.6", "xml2js": "^0.4.23" }, diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index b49e4b8b3b..2b7d10ec0b 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -58,7 +58,7 @@ "@types/node": "^16.11.26", "@types/recharts": "^1.8.15", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index e99c0132e3..2f6a6f0c92 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -47,7 +47,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "*", "@types/node": "*", - "msw": "^0.44.0", + "msw": "^0.45.0", "cross-fetch": "^3.1.5" }, "files": [ diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 957fc57b35..e1fb598c7f 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -51,7 +51,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index d520945f8f..52d33c83d9 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -76,7 +76,7 @@ "@types/yup": "^0.29.13", "canvas": "^2.6.1", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 75840783b1..3ae4d60bc1 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -48,7 +48,7 @@ "@types/node": "*", "cross-fetch": "^3.1.5", "express": "^4.18.1", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 544b1e219e..8b3e7877c5 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -39,7 +39,7 @@ "@backstage/cli": "^0.18.1", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.6" }, "files": [ diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json index 34154fd174..0783ec5641 100644 --- a/plugins/example-todo-list-common/package.json +++ b/plugins/example-todo-list-common/package.json @@ -31,7 +31,7 @@ "@backstage/dev-utils": "^1.0.5-next.0", "@backstage/test-utils": "^1.1.3-next.0", "@types/node": "^16.11.26", - "msw": "^0.44.0", + "msw": "^0.45.0", "cross-fetch": "^3.1.5" }, "files": [ diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 6900e7455a..db168683a2 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -45,7 +45,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index dee3504382..9a20b74af2 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -45,7 +45,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 793baa699e..9ac2c08e48 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -63,7 +63,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index def4c08045..81d71c24c0 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -49,7 +49,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index f9de9e8087..ccc98265b4 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -62,7 +62,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index cc7fdfa61c..30f3a4f00d 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -55,7 +55,7 @@ "@types/node": "^16.11.26", "@types/sanitize-html": "^2.6.2", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 5a24b88a5e..14c0b6ed15 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -57,7 +57,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index d5b0835513..a6d91f9844 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -55,7 +55,7 @@ "@types/node": "^16.11.26", "@types/recharts": "^1.8.15", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 6360a532e6..634b745f2f 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -65,7 +65,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index f230fb77fc..bacd3d9574 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -53,7 +53,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index f64d849ab5..712f0d81c9 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -52,7 +52,7 @@ "@types/node": "*", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index e8d22dcf6f..564753343c 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -58,7 +58,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "peerDependencies": { "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 078b83c61e..ce3db0e4d0 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -58,7 +58,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 30a2b78c32..2d088cb4da 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -61,7 +61,7 @@ "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index a5525f0353..f8dfc5696d 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -60,7 +60,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0", + "msw": "^0.45.0", "react-router-dom": "6.0.0-beta.0" }, "files": [ diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 20be68c811..86c8404683 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -53,7 +53,7 @@ "devDependencies": { "@backstage/cli": "^0.18.1", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/home/package.json b/plugins/home/package.json index 3f87d10771..79f6a9ae4f 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -63,7 +63,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 4342d9a93d..8de9beaf43 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -53,7 +53,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 9a62239954..0d240c077b 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -45,7 +45,7 @@ "@backstage/cli": "^0.18.1", "@types/jenkins": "^0.23.1", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.6" }, "files": [ diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index f013532b55..41fef5fcad 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -65,7 +65,7 @@ "@types/node": "^16.11.26", "@types/testing-library__jest-dom": "^5.9.1", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 5bd7da5060..c74a769df6 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -53,7 +53,7 @@ "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "jest-when": "^3.1.0", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index f0d7076efd..f481ea0dec 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -68,7 +68,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 30539b8859..9bdc9746f6 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -63,7 +63,7 @@ "@types/node": "^16.11.26", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 541fdbddb3..0b28a72ad9 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -57,7 +57,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/org/package.json b/plugins/org/package.json index 3d9582a81b..17a9b07226 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -59,7 +59,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 367bcdc40a..0f317b0fa4 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -63,7 +63,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index bdbf7f8e62..5c635155bb 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -37,7 +37,7 @@ "devDependencies": { "@backstage/cli": "^0.18.1", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.6" }, "files": [ diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index e3137741ef..98beac55c8 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -53,7 +53,7 @@ "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index a529c87439..f70910099d 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -43,7 +43,7 @@ "@types/lodash": "^4.14.151", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index 2ae26ad6f9..373c89a4cf 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -50,6 +50,6 @@ "devDependencies": { "@backstage/cli": "^0.18.1-next.0", "@types/jest": "^26.0.7", - "msw": "^0.44.0" + "msw": "^0.45.0" } } diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 980a600020..0657b91a80 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@backstage/cli": "^0.18.1", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 3b6c732a57..3bc6752d00 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -51,7 +51,7 @@ "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "@types/yup": "^0.29.13", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 449ff72536..f8965df8f0 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -53,7 +53,7 @@ "@backstage/backend-test-utils": "^0.1.27", "@backstage/cli": "^0.18.1", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 0928e90778..309ced4f67 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -65,7 +65,7 @@ "@types/node": "^16.11.26", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index aeb8a42df6..a6c64ce8b6 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -41,7 +41,7 @@ "@types/jest": "^26.0.7", "@types/command-exists": "^1.2.0", "mock-fs": "^5.1.0", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 3b9c24cf88..c0da12df74 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -91,7 +91,7 @@ "esbuild": "^0.14.1", "jest-when": "^3.1.0", "mock-fs": "^5.1.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3", "yaml": "^2.0.0" }, diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 52be3be8a4..408c1889c4 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -95,7 +95,7 @@ "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "event-source-polyfill": "1.0.25", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/search/package.json b/plugins/search/package.json index 11bbc4b1ae..8c000eac6c 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -68,7 +68,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index afcf15c1c5..cc33c8dc13 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -65,7 +65,7 @@ "@types/node": "^16.11.26", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 46f75c010d..24ac74f9aa 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -52,7 +52,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index a5046136aa..cdfdb005b5 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -37,7 +37,7 @@ "@backstage/cli": "^0.18.1", "@backstage/test-utils": "^1.1.3", "@types/supertest": "^2.0.12", - "msw": "^0.44.2", + "msw": "^0.45.0", "supertest": "^6.2.4" }, "files": [ diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 2944e40894..ac3a8302b0 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -62,7 +62,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index ef287bfc64..1e496f5402 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -62,7 +62,7 @@ "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "configSchema": "config.d.ts", "files": [ diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 27da0751f4..c8a5d36c65 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -50,7 +50,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 2cd84c9915..2c33001ef3 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -57,7 +57,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index c65d159429..b68536c1ff 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -62,7 +62,7 @@ "@types/node": "^16.11.26", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index a355d55276..b168371441 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -63,7 +63,7 @@ "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", - "msw": "^0.44.0", + "msw": "^0.45.0", "cross-fetch": "^3.1.5" }, "files": [ diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index dcf8da6d7a..ec47ff7fbf 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -60,7 +60,7 @@ "@backstage/cli": "^0.18.1", "@backstage/plugin-search-backend-node": "1.0.1", "@types/dockerode": "^3.3.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 7e8b3f3cac..4a1fe091ba 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -62,7 +62,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "@types/react": "^16.13.1 || ^17.0.0", - "msw": "^0.44.0", + "msw": "^0.45.0", "cross-fetch": "^3.1.5" }, "files": [ diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 10f9f2f4c0..8055a20009 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -81,7 +81,7 @@ "@types/node": "^16.11.26", "canvas": "^2.6.1", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist", diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index fc5b396a7c..b6eda27164 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -45,7 +45,7 @@ "devDependencies": { "@backstage/cli": "^0.18.1", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.3" }, "files": [ diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 0472ddd349..48c8c603a4 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -55,7 +55,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0", + "msw": "^0.45.0", "react-router": "6.0.0-beta.0" }, "files": [ diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 7aea0a9bbb..0bc05c1215 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -58,7 +58,7 @@ "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 506b68ed6e..feca26cd6c 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -54,7 +54,7 @@ "@backstage/cli": "^0.18.1", "@types/compression": "^1.7.2", "@types/supertest": "^2.0.8", - "msw": "^0.44.0", + "msw": "^0.45.0", "supertest": "^6.1.6" }, "files": [ diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 66797dc171..a50d5c64ca 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -59,7 +59,7 @@ "@types/jest": "*", "@types/node": "*", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index d71dbb02d3..624c5c1f98 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -51,7 +51,7 @@ "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", - "msw": "^0.44.0" + "msw": "^0.45.0" }, "files": [ "dist" diff --git a/yarn.lock b/yarn.lock index 5de2505577..328b032763 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4954,18 +4954,6 @@ outvariant "^1.2.1" strict-event-emitter "^0.2.0" -"@mswjs/interceptors@^0.16.3": - version "0.16.6" - resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.16.6.tgz#c1a777ed3f69b55bbbc725b2deb827f160c0107c" - integrity sha512-7ax1sRx5s4ZWl0KvVhhcPOUoPbCCkVh8M8hYaqOyvoAQOiqLVzy+Z6Mh2ywPhYw4zudr5Mo/E8UT/zJBO/Wxrw== - dependencies: - "@open-draft/until" "^1.0.3" - "@xmldom/xmldom" "^0.7.5" - debug "^4.3.3" - headers-polyfill "^3.0.4" - outvariant "^1.2.1" - strict-event-emitter "^0.2.4" - "@mswjs/interceptors@^0.17.2": version "0.17.2" resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.2.tgz#a1d1cd8ef98b944c91d9fe202f27a68ec3673b88" @@ -19239,36 +19227,10 @@ msw@^0.39.2: type-fest "^1.2.2" yargs "^17.3.1" -msw@^0.43.0: - version "0.43.1" - resolved "https://registry.npmjs.org/msw/-/msw-0.43.1.tgz#57cb4af56f07442e8a6d14d76032a0ab41434256" - integrity sha512-wzhPpL6RsiYkyIUlTCg0aZY0aRZa4Eiubd6MOA5oJVgfuapDmvZrI8OMi4h4e+fpHD+Qsy+4unAjv3wpWia5yw== - dependencies: - "@mswjs/cookies" "^0.2.0" - "@mswjs/interceptors" "^0.16.3" - "@open-draft/until" "^1.0.3" - "@types/cookie" "^0.4.1" - "@types/js-levenshtein" "^1.1.1" - chalk "4.1.1" - chokidar "^3.4.2" - cookie "^0.4.2" - graphql "^16.3.0" - headers-polyfill "^3.0.4" - inquirer "^8.2.0" - is-node-process "^1.0.1" - js-levenshtein "^1.1.6" - node-fetch "^2.6.7" - outvariant "^1.3.0" - path-to-regexp "^6.2.0" - statuses "^2.0.0" - strict-event-emitter "^0.2.0" - type-fest "^1.2.2" - yargs "^17.3.1" - -msw@^0.44.0, msw@^0.44.2: - version "0.44.2" - resolved "https://registry.npmjs.org/msw/-/msw-0.44.2.tgz#00a901b6cc9d119fb30f794330d96dca6944afc2" - integrity sha512-u8wjzzcMWouoZtuIShCwx4M3wFF5sBAV1f8K4a0WX8kiihFjzl89IKE1VYmTclLyMIwpOq8qQ1HTpuh2BFX/3A== +msw@^0.45.0: + version "0.45.0" + resolved "https://registry.npmjs.org/msw/-/msw-0.45.0.tgz#7bab4ff0a03875aa17b7fefd5fbeea0b71f95957" + integrity sha512-aZgYsSJWYLHj5wZs/g640GP5AK6gfHC6dKTED8bforKZx10IJ+b0z7Y+0infEKD4gNT3orj7tiUZe4pxgpY0SQ== dependencies: "@mswjs/cookies" "^0.2.2" "@mswjs/interceptors" "^0.17.2" @@ -19278,7 +19240,6 @@ msw@^0.44.0, msw@^0.44.2: chalk "4.1.1" chokidar "^3.4.2" cookie "^0.4.2" - graphql "^16.3.0" headers-polyfill "^3.0.4" inquirer "^8.2.0" is-node-process "^1.0.1" From 0ec1dd309813c9b3a4b511a7a85fd9349975a6a6 Mon Sep 17 00:00:00 2001 From: Niek te Grootenhuis Date: Mon, 22 Aug 2022 10:06:31 +0200 Subject: [PATCH 203/275] chore: updated api-reports Signed-off-by: Niek te Grootenhuis --- plugins/tech-insights-backend/api-report.md | 3 +++ plugins/tech-insights-node/api-report.md | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/tech-insights-backend/api-report.md b/plugins/tech-insights-backend/api-report.md index dc90d76107..5d08a644db 100644 --- a/plugins/tech-insights-backend/api-report.md +++ b/plugins/tech-insights-backend/api-report.md @@ -5,6 +5,7 @@ ```ts import { CheckResult } from '@backstage/plugin-tech-insights-common'; import { Config } from '@backstage/config'; +import { Duration } from 'luxon'; import express from 'express'; import { FactChecker } from '@backstage/plugin-tech-insights-node'; import { FactCheckerFactory } from '@backstage/plugin-tech-insights-node'; @@ -12,6 +13,7 @@ import { FactLifecycle } from '@backstage/plugin-tech-insights-node'; import { FactRetriever } from '@backstage/plugin-tech-insights-node'; import { FactRetrieverRegistration } from '@backstage/plugin-tech-insights-node'; import { FactSchema } from '@backstage/plugin-tech-insights-node'; +import { HumanDuration } from '@backstage/backend-tasks'; import { Logger } from 'winston'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -50,6 +52,7 @@ export type FactRetrieverRegistrationOptions = { cadence: string; factRetriever: FactRetriever; lifecycle?: FactLifecycle; + timeout?: Duration | HumanDuration; }; // @public (undocumented) diff --git a/plugins/tech-insights-node/api-report.md b/plugins/tech-insights-node/api-report.md index 19645d604b..a57cf3ec4a 100644 --- a/plugins/tech-insights-node/api-report.md +++ b/plugins/tech-insights-node/api-report.md @@ -8,6 +8,7 @@ import { Config } from '@backstage/config'; import { DateTime } from 'luxon'; import { Duration } from 'luxon'; import { DurationLike } from 'luxon'; +import { HumanDuration } from '@backstage/backend-tasks'; import { JsonValue } from '@backstage/types'; import { Logger } from 'winston'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -72,7 +73,7 @@ export type FactRetrieverContext = { export type FactRetrieverRegistration = { factRetriever: FactRetriever; cadence?: string; - timeout?: Duration; + timeout?: Duration | HumanDuration; lifecycle?: FactLifecycle; }; From 6cad070a728fbfa38b9332d074f5f0c82ea5a7e0 Mon Sep 17 00:00:00 2001 From: Niek te Grootenhuis Date: Mon, 22 Aug 2022 10:23:34 +0200 Subject: [PATCH 204/275] chore: remove options reference from jsdoc Signed-off-by: Niek te Grootenhuis --- .../src/service/fact/createFactRetriever.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts index aa4d9aff03..aaba29ecb1 100644 --- a/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts +++ b/plugins/tech-insights-backend/src/service/fact/createFactRetriever.ts @@ -41,10 +41,10 @@ export type FactRetrieverRegistrationOptions = { * @public * * A helper function to construct fact retriever registrations. - * @param options.cadence - Cron expression to indicate when the fact retriever should be triggered - * @param options.factRetriever - Implementation of fact retriever consisting of at least id, version, schema and handler - * @param options.lifecycle - Optional lifecycle definition indicating the cleanup logic of facts when this retriever is run - * @param options.timeout - Optional duration to determine how long the fact retriever should be allowed to run, defaults to 5 minutes + * @param cadence - Cron expression to indicate when the fact retriever should be triggered + * @param factRetriever - Implementation of fact retriever consisting of at least id, version, schema and handler + * @param lifecycle - Optional lifecycle definition indicating the cleanup logic of facts when this retriever is run + * @param timeout - Optional duration to determine how long the fact retriever should be allowed to run, defaults to 5 minutes * * * @remarks From 99138edc66aaaae4f6b4e62f90a0fae5843ab450 Mon Sep 17 00:00:00 2001 From: Niek te Grootenhuis Date: Mon, 22 Aug 2022 10:40:43 +0200 Subject: [PATCH 205/275] chore: add missing luxon types Signed-off-by: Niek te Grootenhuis --- plugins/tech-insights-backend/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 194959d163..e176a5d5f6 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -43,6 +43,7 @@ "@backstage/plugin-tech-insights-common": "^0.2.6", "@backstage/plugin-tech-insights-node": "^0.3.3", "@types/express": "^4.17.6", + "@types/luxon": "^3.0.0", "express": "^4.17.1", "express-promise-router": "^4.1.0", "knex": "^2.0.0", @@ -56,8 +57,8 @@ "devDependencies": { "@backstage/backend-test-utils": "^0.1.27", "@backstage/cli": "^0.18.1", - "@types/supertest": "^2.0.8", "@types/semver": "^7.3.8", + "@types/supertest": "^2.0.8", "supertest": "^6.1.3", "wait-for-expect": "^3.0.2" }, From 18f4933cd47db82cc7ebdd4b801296173a2ff867 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 08:51:30 +0000 Subject: [PATCH 206/275] fix(deps): update dependency @uiw/react-codemirror to v4.11.5 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5de2505577..5885ee37b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8021,10 +8021,10 @@ "@typescript-eslint/types" "5.9.0" eslint-visitor-keys "^3.0.0" -"@uiw/codemirror-extensions-basic-setup@4.11.4": - version "4.11.4" - resolved "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.11.4.tgz#c749a66980e18ca6651488712ea3239c82a31cdd" - integrity sha512-pc9pQtCQFmAH5nV9UmX37VB0+yzSFQ2kbSvLHBFST9siYnacaR6HxmkBBBbYYXwVK/n9pGZ6A8ZefAUNTFfo/A== +"@uiw/codemirror-extensions-basic-setup@4.11.5": + version "4.11.5" + resolved "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.11.5.tgz#e66462bda16bb635948a6faa8ee354f5db22f0b5" + integrity sha512-aHtdF1JEzHmBVuWXemr8OH7SQP/LbXXZdiOo/4tcxjFpyTuVGzPteBdfQU0xPOk0m+5Oc1LPqM+HaNPXNzX6aA== dependencies: "@codemirror/autocomplete" "^6.0.0" "@codemirror/commands" "^6.0.0" @@ -8035,13 +8035,13 @@ "@codemirror/view" "^6.0.0" "@uiw/react-codemirror@^4.9.3": - version "4.11.4" - resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.11.4.tgz#76adc757baa0b8b1a9bd30d7081f5622b896d607" - integrity sha512-p7DNBI6kj+DUzTe7MjBJwZ3qo0nSOav7T0MEGRpRNZA9ZO3RnzhPMie6swDA8e3dz1s59l9UdFB1fgyam1vFhQ== + version "4.11.5" + resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.11.5.tgz#9efead5e0f9496bda6eeb1118b67687b3b82861a" + integrity sha512-Bf8l3nVV4ekHbv4U0VrzUibl8+ucAY3UV0gk0xckbFnV1AlUxHcrYFiXSgy/rkyWBD7enHQENtM888B/3qBiwg== dependencies: "@babel/runtime" "^7.18.6" "@codemirror/theme-one-dark" "^6.0.0" - "@uiw/codemirror-extensions-basic-setup" "4.11.4" + "@uiw/codemirror-extensions-basic-setup" "4.11.5" codemirror "^6.0.0" "@webassemblyjs/ast@1.11.1": From a2217c28a10e7d04f97d0443486a3078a6e5ed40 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 11:21:51 +0200 Subject: [PATCH 207/275] chore: empty strings are still strings, so if it's not set default to undefined to throw the correct error Signed-off-by: blam --- .../src/components/fields/EntityPicker/EntityPicker.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index b7e3122c31..2aa72550c3 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -72,7 +72,7 @@ export const EntityPicker = ( const onSelect = useCallback( (_: any, value: string | null) => { - onChange(value || ''); + onChange(value ?? undefined); }, [onChange], ); From 9ffb75616d7e9477d4205d1c10e4b3b9a6a65a1b Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 11:22:46 +0200 Subject: [PATCH 208/275] Added changeset Signed-off-by: blam --- .changeset/dry-games-end.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/dry-games-end.md diff --git a/.changeset/dry-games-end.md b/.changeset/dry-games-end.md new file mode 100644 index 0000000000..dc2f86ee10 --- /dev/null +++ b/.changeset/dry-games-end.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Fix bug with empty strings in `EntityPicker` From 1abfa8e445bd9587cdfe66b75036dcab86428bbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 22 Aug 2022 11:31:35 +0200 Subject: [PATCH 209/275] fixup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/cli/templates/default-backend-plugin/package.json.hbs | 2 +- packages/cli/templates/default-plugin/package.json.hbs | 2 +- 2 files changed, 2 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 0a5600ad24..3b9a34db33 100644 --- a/packages/cli/templates/default-backend-plugin/package.json.hbs +++ b/packages/cli/templates/default-backend-plugin/package.json.hbs @@ -41,7 +41,7 @@ "@backstage/cli": "{{versionQuery '@backstage/cli'}}", "@types/supertest": "{{versionQuery '@types/supertest' '2.0.8'}}", "supertest": "{{versionQuery 'supertest' '4.0.2'}}", - "msw": "{{versionQuery 'msw' '0.44.0'}}" + "msw": "{{versionQuery 'msw' '0.45.0'}}" }, "files": [ "dist" diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index f084d59a8e..540bd75755 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -49,7 +49,7 @@ "@testing-library/user-event": "{{versionQuery '@testing-library/user-event' '14.0.0'}}", "@types/jest": "{{versionQuery '@types/jest' '26.0.7'}}", "@types/node": "{{versionQuery '@types/node' '16.11.26'}}", - "msw": "{{versionQuery 'msw' '0.44.0'}}", + "msw": "{{versionQuery 'msw' '0.45.0'}}", "cross-fetch": "{{versionQuery 'cross-fetch' '3.1.5'}}" }, "files": [ From cb1cfc018b9297c0ebdc31d3c8fde7794e70a674 Mon Sep 17 00:00:00 2001 From: Alisson Fabiano Date: Mon, 22 Aug 2022 10:38:22 +0100 Subject: [PATCH 210/275] fix: update changeset docs Signed-off-by: Alisson Fabiano --- .changeset/shiny-lobsters-fix.md | 39 ++++++++++++++++++++++++++++++++ .changeset/weak-yaks-learn.md | 29 +----------------------- plugins/azure-devops/README.md | 2 +- 3 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 .changeset/shiny-lobsters-fix.md diff --git a/.changeset/shiny-lobsters-fix.md b/.changeset/shiny-lobsters-fix.md new file mode 100644 index 0000000000..99e255acbe --- /dev/null +++ b/.changeset/shiny-lobsters-fix.md @@ -0,0 +1,39 @@ +--- +'@backstage/plugin-azure-devops-backend': patch +--- + +`createRouter` now requires an additional reader: `UrlReader` argument + +```diff +export default async function createPlugin( + env: PluginEnvironment, +): Promise { + return createRouter({ + logger: env.logger, + config: env.config, ++ reader: env.reader, + }); +} +``` + +Remember to check if you have already provided these settings previously. + +#### [Azure DevOps] + +```yaml +# app-config.yaml +azureDevOps: + host: dev.azure.com + token: my-token + organization: my-company +``` + +#### [Azure Integrations] + +```yaml +# app-config.yaml +integrations: + azure: + - host: dev.azure.com + token: ${AZURE_TOKEN} +``` diff --git a/.changeset/weak-yaks-learn.md b/.changeset/weak-yaks-learn.md index aa45c79524..7a94e10d68 100644 --- a/.changeset/weak-yaks-learn.md +++ b/.changeset/weak-yaks-learn.md @@ -1,36 +1,9 @@ --- '@backstage/plugin-azure-devops': minor -'@backstage/plugin-azure-devops-backend': minor '@backstage/plugin-azure-devops-common': minor --- -Added README card for Azure Devops - -**Before:** - -Remember to check if you have already provided these settings previously, as we will need them for the reamde card to work. - -#### [Azure DevOps](https://github.com/backstage/backstage/blob/master/app-config.yaml#L48L51:~:text=azureDevOps%3A,%3A%20my%2Dcompany) - -```yaml -# app-config.yaml -azureDevOps: - host: dev.azure.com - token: my-token - organization: my-company -``` - -#### [Azure Integrations](https://github.com/backstage/backstage/blob/master/app-config.yaml#L48L51:~:text=azure%3A,%3A%20%24%7BAZURE_TOKEN%7D) - -```yaml -# app-config.yaml -integrations: - azure: - - host: dev.azure.com - token: ${AZURE_TOKEN} -``` - -**After:** +Added README card `EntityAzureReadmeCard` for Azure Devops. To get the README component working you'll need to do the following two steps: diff --git a/plugins/azure-devops/README.md b/plugins/azure-devops/README.md index 47835268b3..5079fa4f16 100644 --- a/plugins/azure-devops/README.md +++ b/plugins/azure-devops/README.md @@ -76,7 +76,7 @@ In this case `` will be the name of your Team Project and ` Date: Mon, 8 Aug 2022 16:12:19 +0200 Subject: [PATCH 211/275] fix(ldap): allowing usage of searchStreaming function in no-paged Signed-off-by: Antonio Musolino --- .../src/ldap/client.ts | 94 ++++++++++--------- .../src/ldap/util.test.ts | 51 +++++++++- .../src/ldap/util.ts | 15 ++- 3 files changed, 114 insertions(+), 46 deletions(-) diff --git a/plugins/catalog-backend-module-ldap/src/ldap/client.ts b/plugins/catalog-backend-module-ldap/src/ldap/client.ts index d182875e10..0afeb16248 100644 --- a/plugins/catalog-backend-module-ldap/src/ldap/client.ts +++ b/plugins/catalog-backend-module-ldap/src/ldap/client.ts @@ -14,12 +14,12 @@ * limitations under the License. */ -import { ForwardedError } from '@backstage/errors'; +import { ForwardedError, stringifyError } from '@backstage/errors'; import ldap, { Client, SearchEntry, SearchOptions } from 'ldapjs'; -import { cloneDeep, merge } from 'lodash'; +import { cloneDeep } from 'lodash'; import { Logger } from 'winston'; import { BindConfig, TLSConfig } from './config'; -import { errorString } from './util'; +import { createOptions, errorString } from './util'; import { ActiveDirectoryVendor, DefaultLdapVendor, @@ -150,54 +150,60 @@ export class LdapClient { f: (entry: SearchEntry) => Promise | void, ): Promise { try { - let awaitList: Array | void> = []; return await new Promise((resolve, reject) => { // Note that we clone the (frozen) options, since ldapjs rudely tries to // overwrite parts of them - this.client.search( - dn, - merge(cloneDeep(options), { paged: { pagePause: true } }), - (err, res) => { - if (err) { - reject(new Error(errorString(err))); - } + this.client.search(dn, createOptions(options), (err, res) => { + if (err) { + reject(new Error(errorString(err))); + } + let awaitList: Array | void> = []; + let transformError = false; - res.on('searchReference', () => { - this.logger.warn('Received unsupported search referral'); - }); + const transformReject = (e: Error) => { + transformError = true; + reject( + new Error( + `Transform function threw an exception, ${stringifyError(e)}`, + ), + ); + }; - res.on('searchEntry', entry => { - awaitList.push(f(entry)); - }); + res.on('searchReference', () => { + this.logger.warn('Received unsupported search referral'); + }); - res.on('page', (_, cb) => { - // awaits completion before fetching next page + res.on('searchEntry', entry => { + if (!transformError) awaitList.push(f(entry)); + }); + + res.on('page', (_, cb) => { + // awaits completion before fetching next page + Promise.all(awaitList) + .then(() => { + // flush list + awaitList = []; + if (cb) cb(); + }) + .catch(transformReject); + }); + + res.on('error', e => { + reject(new Error(errorString(e))); + }); + + res.on('end', r => { + if (!r) { + throw new Error('Null response'); + } else if (r.status !== 0) { + throw new Error(`Got status ${r.status}: ${r.errorMessage}`); + } else { Promise.all(awaitList) - .then(() => { - // flush list - awaitList = []; - if (cb) cb(); - }) - .catch(reject); - }); - - res.on('error', e => { - reject(new Error(errorString(e))); - }); - - res.on('end', r => { - if (!r) { - throw new Error('Null response'); - } else if (r.status !== 0) { - throw new Error(`Got status ${r.status}: ${r.errorMessage}`); - } else { - Promise.all(awaitList) - .then(() => resolve()) - .catch(reject); - } - }); - }, - ); + .then(() => resolve()) + .catch(transformReject); + } + }); + }); }); } catch (e) { throw new ForwardedError(`LDAP search at DN "${dn}" failed`, e); diff --git a/plugins/catalog-backend-module-ldap/src/ldap/util.test.ts b/plugins/catalog-backend-module-ldap/src/ldap/util.test.ts index 5978012875..d8787b1226 100644 --- a/plugins/catalog-backend-module-ldap/src/ldap/util.test.ts +++ b/plugins/catalog-backend-module-ldap/src/ldap/util.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { errorString } from './util'; +import { errorString, createOptions } from './util'; describe('errorString', () => { it('formats', () => { @@ -22,3 +22,52 @@ describe('errorString', () => { expect(errorString(e)).toEqual('1 n: m'); }); }); + +describe('createOptions', () => { + it('should add pagePause', () => { + const options = { + filter: 'f', + paged: true, + timeLimit: 42, + sizeLimit: 100, + derefAliases: 0, + typesOnly: false, + }; + expect(createOptions(options)).toEqual({ + filter: 'f', + paged: { pagePause: true }, + timeLimit: 42, + sizeLimit: 100, + derefAliases: 0, + typesOnly: false, + }); + const options2 = { + filter: 'f', + paged: {}, + timeLimit: 42, + sizeLimit: 100, + derefAliases: 0, + typesOnly: false, + }; + expect(createOptions(options2)).toEqual({ + filter: 'f', + paged: { pagePause: true }, + timeLimit: 42, + sizeLimit: 100, + derefAliases: 0, + typesOnly: false, + }); + }); + + it('should not add pagePause', () => { + const options = { + filter: 'f', + paged: false, + timeLimit: 42, + sizeLimit: 100, + derefAliases: 0, + typesOnly: false, + }; + expect(createOptions(options)).toEqual(options); + }); +}); diff --git a/plugins/catalog-backend-module-ldap/src/ldap/util.ts b/plugins/catalog-backend-module-ldap/src/ldap/util.ts index 0f443c1a86..74b8fe4f88 100644 --- a/plugins/catalog-backend-module-ldap/src/ldap/util.ts +++ b/plugins/catalog-backend-module-ldap/src/ldap/util.ts @@ -14,7 +14,8 @@ * limitations under the License. */ -import { Error as LDAPError, SearchEntry } from 'ldapjs'; +import { Error as LDAPError, SearchEntry, SearchOptions } from 'ldapjs'; +import { cloneDeep } from 'lodash'; import { LdapVendor } from './vendors'; /** @@ -54,6 +55,18 @@ export function mapStringAttr( } } +export function createOptions(inputOptions: SearchOptions): SearchOptions { + const result = cloneDeep(inputOptions); + + if (result.paged === true) { + result.paged = { pagePause: true }; + } else if (typeof result.paged === 'object') { + result.paged.pagePause = true; + } + + return result; +} + export type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] From 9318bf15d48391389b465afddc29200b292f8ce6 Mon Sep 17 00:00:00 2001 From: kielosz Date: Mon, 22 Aug 2022 13:01:32 +0200 Subject: [PATCH 212/275] Use group names in CostInsightsHeader Signed-off-by: kielosz --- .changeset/hot-suits-glow.md | 5 ++ .../CostInsightsHeader.test.tsx | 47 +++++++++++++++++-- .../CostInsightsHeader/CostInsightsHeader.tsx | 23 +++++---- .../CostInsightsPage/CostInsightsPage.tsx | 2 +- 4 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 .changeset/hot-suits-glow.md diff --git a/.changeset/hot-suits-glow.md b/.changeset/hot-suits-glow.md new file mode 100644 index 0000000000..e394d3b8c0 --- /dev/null +++ b/.changeset/hot-suits-glow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +The `CostInsightsHeader`component now uses group names if available diff --git a/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.test.tsx b/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.test.tsx index cccf8b60cd..015a6279da 100644 --- a/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.test.tsx +++ b/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.test.tsx @@ -35,7 +35,7 @@ describe('', () => { const rendered = await renderInTestApp( ', () => { const rendered = await renderInTestApp( ', () => { const rendered = await renderInTestApp( ', () => { const rendered = await renderInTestApp( ', () => { ); expect(rendered.queryByText(/this is awkward/)).toBeInTheDocument(); }); + + describe.each` + hasCostData | alerts + ${true} | ${0} + ${true} | ${1} + ${false} | ${0} + `('Shows proper group name', ({ hasCostData, alerts }) => { + it('Shows group display name when available', async () => { + const rendered = await renderInTestApp( + + + , + ); + expect( + rendered.queryByText(/Test group display name/), + ).toBeInTheDocument(); + }); + + it('Fallbacks to group id when display name not available', async () => { + const rendered = await renderInTestApp( + + + , + ); + expect(rendered.queryByText(/test-user-group-1/)).toBeInTheDocument(); + }); + }); }); diff --git a/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.tsx b/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.tsx index cc68f79db1..540165d1d9 100644 --- a/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.tsx +++ b/plugins/cost-insights/src/components/CostInsightsHeader/CostInsightsHeader.tsx @@ -28,19 +28,20 @@ function useDisplayName(): string { } type CostInsightsHeaderProps = { - owner: string; + groupId: string; groups: Group[]; hasCostData: boolean; alerts: number; }; const CostInsightsHeaderNoData = ({ - owner, + groupId, groups, }: CostInsightsHeaderProps) => { const displayName = useDisplayName(); const classes = useCostInsightsStyles(); const hasMultipleGroups = groups.length > 1; + const ownerName = groups.find(({ id }) => id === groupId)?.name ?? groupId; return ( <> @@ -51,8 +52,8 @@ const CostInsightsHeaderNoData = ({ Well this is awkward - Hey, {displayName}! {owner} doesn't seem to have any cloud - costs. + Hey, {displayName}! {ownerName} doesn't seem to have any + cloud costs. {hasMultipleGroups && ( @@ -64,11 +65,13 @@ const CostInsightsHeaderNoData = ({ }; const CostInsightsHeaderAlerts = ({ - owner, + groupId, + groups, alerts, }: CostInsightsHeaderProps) => { const displayName = useDisplayName(); const classes = useCostInsightsStyles(); + const ownerName = groups.find(({ id }) => id === groupId)?.name ?? groupId; return ( <> @@ -81,15 +84,19 @@ const CostInsightsHeaderAlerts = ({ Hey, {displayName}! We've identified{' '} {alerts > 1 ? 'a few things ' : 'one thing '} - {owner} should look into next. + {ownerName} should look into next. ); }; -const CostInsightsHeaderNoAlerts = ({ owner }: CostInsightsHeaderProps) => { +const CostInsightsHeaderNoAlerts = ({ + groupId, + groups, +}: CostInsightsHeaderProps) => { const displayName = useDisplayName(); const classes = useCostInsightsStyles(); + const ownerName = groups.find(({ id }) => id === groupId)?.name ?? groupId; return ( <> @@ -100,7 +107,7 @@ const CostInsightsHeaderNoAlerts = ({ owner }: CostInsightsHeaderProps) => { Your team is doing great - Hey, {displayName}! {owner} is doing well. No major + Hey, {displayName}! {ownerName} is doing well. No major changes this month. diff --git a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx index 8fdfda936e..00d92f945d 100644 --- a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx +++ b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx @@ -272,7 +272,7 @@ export const CostInsightsPage = () => { Date: Mon, 22 Aug 2022 13:46:32 +0200 Subject: [PATCH 213/275] vocab: add telus Signed-off-by: Patrik Oldsberg --- .github/vale/Vocab/Backstage/accept.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt index bd3bcdfb6e..ae94912f38 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/Vocab/Backstage/accept.txt @@ -313,6 +313,7 @@ Talkdesk tasklist techdocs Telenor +telus templated templater Templater From e8a107895baded467e0efe91be9443fe400f9167 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 12:38:58 +0000 Subject: [PATCH 214/275] fix(deps): update dependency @roadiehq/backstage-plugin-buildkite to v2.0.7 Signed-off-by: Renovate Bot --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9b545f8477..4d0df28cd1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5878,12 +5878,12 @@ integrity sha512-8UiDeDbjCImFSfOegGu13otQ7OdP9FOYpcLjeouppnhs+MPeIEAtYS+jCcBKmi3reyTagC15/KVSRhde1wS1vg== "@roadiehq/backstage-plugin-buildkite@^2.0.0": - version "2.0.6" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-buildkite/-/backstage-plugin-buildkite-2.0.6.tgz#2ef3c7095953d969adc78e1dc84633d822a69bc1" - integrity sha512-rb/oeh2fvM0WUKcJ55N+PN/Gy4Tm6HwQiozboXr8Ap7uwzyBq0j7REICsVpBUJZbMg7MlRaMjBWDKeogG4Rtpg== + version "2.0.7" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-buildkite/-/backstage-plugin-buildkite-2.0.7.tgz#fdd6b3d3c0eb2be09b35b38b207d6a0873147764" + integrity sha512-TTv6S2+ByNG2BFtonwDQ/RiMpbTyQxkSFNdw1ZWQZyiaeMYRdIxlTKsZ8BzvmcGW+Ez6z7zEFT6x2T22GdXvqA== dependencies: "@backstage/catalog-model" "^1.0.0" - "@backstage/core-components" "^0.10.0" + "@backstage/core-components" "^0.11.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" "@backstage/theme" "^0.2.6" From f7119e061b00c5c1d144e65fe25b4ef797c9386b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 12:40:08 +0000 Subject: [PATCH 215/275] fix(deps): update dependency @roadiehq/backstage-plugin-github-insights to v2.0.4 Signed-off-by: Renovate Bot --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9b545f8477..1d5b1c36df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5897,12 +5897,12 @@ react-use "^17.2.4" "@roadiehq/backstage-plugin-github-insights@^2.0.0": - version "2.0.3" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-2.0.3.tgz#736a55a91df963ecbaa259728b1418d362261479" - integrity sha512-s81O1VKtsJ0Znhjn7Uw17o1aHc8VxSL3kvet7cttcPSjLPlbFGqlF4CuFOEGHw7lsrKMrhWfcFaIWhCitc8wrg== + version "2.0.4" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-2.0.4.tgz#4b90f6081795340922d47d3a6abfe6fa877c0746" + integrity sha512-e+WCgWycfvqwn3cNJ37qD0YOtrinUWhFoQGh7spEsNYba9RUN/dSkUcMP1sSWcnHgWOJKtx1s//YbxeeUc4uXw== dependencies: "@backstage/catalog-model" "^1.0.0" - "@backstage/core-components" "^0.10.0" + "@backstage/core-components" "^0.11.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/integration-react" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" From 6799bd05c8478100d9b5e00d70e95f610c89c73d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 13:24:46 +0000 Subject: [PATCH 216/275] fix(deps): update dependency @roadiehq/backstage-plugin-travis-ci to v2.0.4 Signed-off-by: Renovate Bot --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9b545f8477..6f8dd56533 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5944,12 +5944,12 @@ react-use "^17.2.4" "@roadiehq/backstage-plugin-travis-ci@^2.0.0": - version "2.0.3" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-2.0.3.tgz#1b49ad4bf1521fdcfcc984236aaf7b2195c0e50a" - integrity sha512-a+dwmVyt4jUcUzYR5vVEAm68t5TPdfitrDH9RLI5vhn0hR/nZbf6LBGjGbbqglj3ettFzb1UFubs6BbMsrFEpA== + version "2.0.4" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-2.0.4.tgz#be6504edfe58e4ae7156397589db7e7c644927bc" + integrity sha512-SpoQf2fSvN3OQKSeZaLBLZSk8+R9kyXONNZMyhLJj2cq/kQwvYeBn/PuURCV4bMxBg/zt21CUnfmAMXDeG1guw== dependencies: "@backstage/catalog-model" "^1.0.0" - "@backstage/core-components" "^0.10.0" + "@backstage/core-components" "^0.11.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" "@backstage/theme" "^0.2.9" From c0a08fd08c6734fc6553ae6977be9e45d6fdd205 Mon Sep 17 00:00:00 2001 From: Jason Nguyen Date: Sun, 21 Aug 2022 14:05:55 -0600 Subject: [PATCH 217/275] create-app: add `EntityLinksCard` to the System `EntityPage` Signed-off-by: Jason Nguyen --- .changeset/young-trees-rescue.md | 24 +++++++++++++++++++ .../app/src/components/catalog/EntityPage.tsx | 5 +++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 .changeset/young-trees-rescue.md diff --git a/.changeset/young-trees-rescue.md b/.changeset/young-trees-rescue.md new file mode 100644 index 0000000000..d2ea5b3aeb --- /dev/null +++ b/.changeset/young-trees-rescue.md @@ -0,0 +1,24 @@ +--- +'@backstage/create-app': patch +--- + +Added `EntityLinksCard` to the system `EntityPage`. + +For an existing installation where you want to display the links card for entity pages of kind `system` you should make the following adjustment to `packages/app/src/components/catalog/EntityPage.tsx` + +```diff +const systemPage = ( + ... + + + ++ ++ ++ +- ++ + + + ... +); +``` 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 6ec4da055d..d98153f660 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 @@ -324,7 +324,10 @@ const systemPage = ( - + + + + From 9e8e9f524394ecfdd4efc163eb169a43c14288f4 Mon Sep 17 00:00:00 2001 From: Jussi Hallila Date: Fri, 19 Aug 2022 14:41:48 +0200 Subject: [PATCH 218/275] Modify tech insights backend to expose FactRetrieverEngine. * Wrap FactRetrieverEngine to an interface for a slimmer export. * Update API report to match expected. * Fix router endpoint docs to match actual functionality. Signed-off-by: Jussi Hallila --- .changeset/tiny-oranges-thank.md | 5 +++ plugins/tech-insights-backend/api-report.md | 8 +++++ plugins/tech-insights-backend/package.json | 1 + plugins/tech-insights-backend/src/index.ts | 2 +- .../service/fact/FactRetrieverEngine.test.ts | 7 ++-- .../src/service/fact/FactRetrieverEngine.ts | 33 +++++++++++++++++-- .../src/service/fact/FactRetrieverRegistry.ts | 2 +- .../src/service/router.ts | 2 +- .../src/service/techInsightsContextBuilder.ts | 10 ++++-- 9 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 .changeset/tiny-oranges-thank.md diff --git a/.changeset/tiny-oranges-thank.md b/.changeset/tiny-oranges-thank.md new file mode 100644 index 0000000000..179aeea1c4 --- /dev/null +++ b/.changeset/tiny-oranges-thank.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-insights-backend': patch +--- + +Modify Tech insight initialization to expose FactRetrieverEngine. Enables users to trigger fact retrieval manually or reschedule retrievers on runtime. diff --git a/plugins/tech-insights-backend/api-report.md b/plugins/tech-insights-backend/api-report.md index dc90d76107..b7de961034 100644 --- a/plugins/tech-insights-backend/api-report.md +++ b/plugins/tech-insights-backend/api-report.md @@ -45,6 +45,13 @@ export const entityMetadataFactRetriever: FactRetriever; // @public export const entityOwnershipFactRetriever: FactRetriever; +// @public +export interface FactRetrieverEngine { + getJobRegistration(ref: string): Promise; + schedule(): Promise; + triggerJob(ref: string): Promise; +} + // @public (undocumented) export type FactRetrieverRegistrationOptions = { cadence: string; @@ -92,6 +99,7 @@ export type TechInsightsContext< > = { factChecker?: FactChecker; persistenceContext: PersistenceContext; + factRetrieverEngine: FactRetrieverEngine; }; // @public (undocumented) diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 3fefe0e1e7..786469410b 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -56,6 +56,7 @@ "devDependencies": { "@backstage/backend-test-utils": "^0.1.26-next.3", "@backstage/cli": "^0.18.0-next.3", + "@types/luxon": "^2.0.5", "@types/supertest": "^2.0.8", "@types/semver": "^7.3.8", "supertest": "^6.1.3", diff --git a/plugins/tech-insights-backend/src/index.ts b/plugins/tech-insights-backend/src/index.ts index 66180b1006..28a922cd67 100644 --- a/plugins/tech-insights-backend/src/index.ts +++ b/plugins/tech-insights-backend/src/index.ts @@ -22,7 +22,7 @@ export type { TechInsightsOptions, TechInsightsContext, } from './service/techInsightsContextBuilder'; - +export type { FactRetrieverEngine } from './service/fact/FactRetrieverEngine'; export type { PersistenceContext } from './service/persistence/persistenceContext'; export { createFactRetrieverRegistration } from './service/fact/createFactRetriever'; export type { FactRetrieverRegistry } from './service/fact/FactRetrieverRegistry'; diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts index 131635a1de..3a9506ed46 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts @@ -21,7 +21,10 @@ import { TechInsightsStore, } from '@backstage/plugin-tech-insights-node'; import { FactRetrieverRegistry } from './FactRetrieverRegistry'; -import { FactRetrieverEngine } from './FactRetrieverEngine'; +import { + DefaultFactRetrieverEngine, + FactRetrieverEngine, +} from './FactRetrieverEngine'; import { DatabaseManager, getVoidLogger, @@ -131,7 +134,7 @@ describe('FactRetrieverEngine', () => { }; const manager = databaseManager as DatabaseManager; const scheduler = new TaskScheduler(manager, getVoidLogger()); - return await FactRetrieverEngine.create({ + return await DefaultFactRetrieverEngine.create({ factRetrieverContext: { logger: getVoidLogger(), config: ConfigReader.fromConfigs([]), diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts index f8ff3762dd..2d738b7de8 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts @@ -38,7 +38,36 @@ function duration(startTimestamp: [number, number]): string { return `${seconds.toFixed(1)}s`; } -export class FactRetrieverEngine { +/** + * @public + * + * FactRetrieverEngine responsible scheduling and running fact retrieval tasks. + */ +export interface FactRetrieverEngine { + /** + * Schedules fact retriever run cycles based on configuration provided in the registration. + * + * Default implementation uses backend-tasks to handle scheduling. This function can be called multiple + * times, where initial calls schedule the tasks and subsequents invocations update the schedules. + */ + schedule(): Promise; + + /** + * Provides possibility to manually run a fact retriever job and construct fact data + * + * @param ref - Reference to the task name stored in the executor database. By convention this is the fact retriever id + */ + triggerJob(ref: string): Promise; + + /** + * Exposes fact retriever job configuration information about previous and next runs and schedule + * + * @param ref - Reference to the task name stored in the executor database. By convention this is the fact retriever id + */ + getJobRegistration(ref: string): Promise; +} + +export class DefaultFactRetrieverEngine implements FactRetrieverEngine { private constructor( private readonly repository: TechInsightsStore, private readonly factRetrieverRegistry: FactRetrieverRegistry, @@ -69,7 +98,7 @@ export class FactRetrieverEngine { const retrievers = await factRetrieverRegistry.listRetrievers(); await Promise.all(retrievers.map(it => repository.insertFactSchema(it))); - return new FactRetrieverEngine( + return new DefaultFactRetrieverEngine( repository, factRetrieverRegistry, factRetrieverContext, diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts index 9f4be11bec..62adbad8e3 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts @@ -36,7 +36,7 @@ export interface FactRetrieverRegistry { /** * A basic in memory fact retriever registry. * - * You can replace this with a persistance based version using the FactRetrieverRegistry interface. + * You can replace this with a persistence based version using the FactRetrieverRegistry interface. * */ export class DefaultFactRetrieverRegistry implements FactRetrieverRegistry { diff --git a/plugins/tech-insights-backend/src/service/router.ts b/plugins/tech-insights-backend/src/service/router.ts index b86677ab90..4b93bf4d60 100644 --- a/plugins/tech-insights-backend/src/service/router.ts +++ b/plugins/tech-insights-backend/src/service/router.ts @@ -142,7 +142,7 @@ export async function createRouter< }); /** - * /facts/latest?entity=component:default/mycomponent&startDateTime=2021-12-24T01:23:45&endDateTime=2021-12-31T23:59:59&ids[]=factRetrieverId1&ids[]=factRetrieverId2 + * /facts/range?entity=component:default/mycomponent&startDateTime=2021-12-24T01:23:45&endDateTime=2021-12-31T23:59:59&ids[]=factRetrieverId1&ids[]=factRetrieverId2 */ router.get('/facts/range', async (req, res) => { const { entity } = req.query; diff --git a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts index 008acf192d..fb19fab359 100644 --- a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts +++ b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { FactRetrieverEngine } from './fact/FactRetrieverEngine'; +import { + DefaultFactRetrieverEngine, + FactRetrieverEngine, +} from './fact/FactRetrieverEngine'; import { Logger } from 'winston'; import { DefaultFactRetrieverRegistry, @@ -93,6 +96,7 @@ export type TechInsightsContext< > = { factChecker?: FactChecker; persistenceContext: PersistenceContext; + factRetrieverEngine: FactRetrieverEngine; }; /** @@ -140,7 +144,7 @@ export const buildTechInsightsContext = async < { logger }, ); - const factRetrieverEngine = await FactRetrieverEngine.create({ + const factRetrieverEngine = await DefaultFactRetrieverEngine.create({ scheduler, repository: persistenceContext.techInsightsStore, factRetrieverRegistry, @@ -161,10 +165,12 @@ export const buildTechInsightsContext = async < return { persistenceContext, factChecker, + factRetrieverEngine, }; } return { persistenceContext, + factRetrieverEngine, }; }; From 708a1f2e4c9ec4f9c97c5e17c448a2fa1f7f119a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:56:45 +0000 Subject: [PATCH 219/275] fix(deps): update dependency @roadiehq/backstage-plugin-github-pull-requests to v2.2.6 Signed-off-by: Renovate Bot --- yarn.lock | 53 ++++------------------------------------------------- 1 file changed, 4 insertions(+), 49 deletions(-) diff --git a/yarn.lock b/yarn.lock index cf7e53ec0b..1c747baba3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2040,51 +2040,6 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" -"@backstage/core-components@^0.10.0": - version "0.10.0" - resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.10.0.tgz#d7f802eee82c49677f5d9b63d8c33b7405096caa" - integrity sha512-aG41uf05Jrq44nv8i9WyzRGMEKmQmM1n0MRKz4YUhBksFexXMd+pPST7D9aSFivNm/92o7obPLjcKfx2QYbJqg== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/core-plugin-api" "^1.0.4" - "@backstage/errors" "^1.1.0" - "@backstage/theme" "^0.2.16" - "@backstage/version-bridge" "^1.0.1" - "@material-table/core" "^3.1.0" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - "@react-hookz/web" "^15.0.0" - "@types/react-sparklines" "^1.7.0" - "@types/react-text-truncate" "^0.14.0" - ansi-regex "^6.0.1" - classnames "^2.2.6" - d3-selection "^3.0.0" - d3-shape "^3.0.0" - d3-zoom "^3.0.0" - dagre "^0.8.5" - history "^5.0.0" - immer "^9.0.1" - lodash "^4.17.21" - pluralize "^8.0.0" - prop-types "^15.7.2" - qs "^6.9.4" - rc-progress "3.4.0" - react-helmet "6.1.0" - react-hook-form "^7.12.2" - react-markdown "^8.0.0" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - react-sparklines "^1.7.0" - react-syntax-highlighter "^15.4.5" - react-text-truncate "^0.19.0" - react-use "^17.3.2" - react-virtualized-auto-sizer "^1.0.6" - react-window "^1.8.6" - remark-gfm "^3.0.1" - zen-observable "^0.8.15" - zod "^3.11.6" - "@balena/dockerignore@^1.0.2": version "1.0.2" resolved "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" @@ -5920,12 +5875,12 @@ zustand "3.6.9" "@roadiehq/backstage-plugin-github-pull-requests@^2.0.0": - version "2.2.5" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.2.5.tgz#280fb55f6c2378cc8eb32e2acf25a0522a2ef110" - integrity sha512-8zK4uw5FhqfOwUF0oOp2cXsh+HQzsmmynN5WsLmir6v5CX6p8LPEZbb9aBDD2Gx2pC/s3776xQO95kCbizeUxg== + version "2.2.6" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.2.6.tgz#844f18fb4e4ca569389aaa57bc5212c0137524d1" + integrity sha512-dddbdXWqknk/FLgkxHRf021zK85XWp3OgN+ZgUUvRSrN6zespiZWWpo05utSK1x2QntuhdcBL8WiUYzpiZ4pEg== dependencies: "@backstage/catalog-model" "^1.0.0" - "@backstage/core-components" "^0.10.0" + "@backstage/core-components" "^0.11.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" "@backstage/plugin-home" "^0.4.19" From e15a0208ff1a43531000b81dcc1947e5ac4ceb96 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:58:08 +0000 Subject: [PATCH 220/275] fix(deps): update typescript-eslint monorepo to v5.34.0 Signed-off-by: Renovate Bot --- yarn.lock | 90 +++++++++++++++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/yarn.lock b/yarn.lock index cf7e53ec0b..bf33f74461 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7838,13 +7838,13 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^5.9.0": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz#c0a480d05211660221eda963cc844732fe9b1714" - integrity sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ== + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.34.0.tgz#d690f60e335596f38b01792e8f4b361d9bd0cb35" + integrity sha512-eRfPPcasO39iwjlUAMtjeueRGuIrW3TQ9WseIDl7i5UWuFbf83yYaU7YPs4j8+4CxUMIsj1k+4kV+E+G+6ypDQ== dependencies: - "@typescript-eslint/scope-manager" "5.33.1" - "@typescript-eslint/type-utils" "5.33.1" - "@typescript-eslint/utils" "5.33.1" + "@typescript-eslint/scope-manager" "5.34.0" + "@typescript-eslint/type-utils" "5.34.0" + "@typescript-eslint/utils" "5.34.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -7865,13 +7865,13 @@ eslint-utils "^3.0.0" "@typescript-eslint/parser@^5.9.0": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz#e4b253105b4d2a4362cfaa4e184e2d226c440ff3" - integrity sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA== + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.34.0.tgz#ca710858ea85dbfd30c9b416a335dc49e82dbc07" + integrity sha512-SZ3NEnK4usd2CXkoV3jPa/vo1mWX1fqRyIVUQZR4As1vyp4fneknBNJj+OFtV8WAVgGf+rOHMSqQbs2Qn3nFZQ== dependencies: - "@typescript-eslint/scope-manager" "5.33.1" - "@typescript-eslint/types" "5.33.1" - "@typescript-eslint/typescript-estree" "5.33.1" + "@typescript-eslint/scope-manager" "5.34.0" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/typescript-estree" "5.34.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.20.0": @@ -7882,13 +7882,13 @@ "@typescript-eslint/types" "5.20.0" "@typescript-eslint/visitor-keys" "5.20.0" -"@typescript-eslint/scope-manager@5.33.1": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz#8d31553e1b874210018ca069b3d192c6d23bc493" - integrity sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA== +"@typescript-eslint/scope-manager@5.34.0": + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.34.0.tgz#14efd13dc57602937e25f188fd911f118781e527" + integrity sha512-HNvASMQlah5RsBW6L6c7IJ0vsm+8Sope/wu5sEAf7joJYWNb1LDbJipzmdhdUOnfrDFE6LR1j57x1EYVxrY4ow== dependencies: - "@typescript-eslint/types" "5.33.1" - "@typescript-eslint/visitor-keys" "5.33.1" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/visitor-keys" "5.34.0" "@typescript-eslint/scope-manager@5.9.0": version "5.9.0" @@ -7898,12 +7898,12 @@ "@typescript-eslint/types" "5.9.0" "@typescript-eslint/visitor-keys" "5.9.0" -"@typescript-eslint/type-utils@5.33.1": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz#1a14e94650a0ae39f6e3b77478baff002cec4367" - integrity sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g== +"@typescript-eslint/type-utils@5.34.0": + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.34.0.tgz#7a324ab9ddd102cd5e1beefc94eea6f3eb32d32d" + integrity sha512-Pxlno9bjsQ7hs1pdWRUv9aJijGYPYsHpwMeCQ/Inavhym3/XaKt1ZKAA8FIw4odTBfowBdZJDMxf2aavyMDkLg== dependencies: - "@typescript-eslint/utils" "5.33.1" + "@typescript-eslint/utils" "5.34.0" debug "^4.3.4" tsutils "^3.21.0" @@ -7912,10 +7912,10 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz#fa39c3c2aa786568302318f1cb51fcf64258c20c" integrity sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg== -"@typescript-eslint/types@5.33.1": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz#3faef41793d527a519e19ab2747c12d6f3741ff7" - integrity sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ== +"@typescript-eslint/types@5.34.0": + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.34.0.tgz#217bf08049e9e7b86694d982e88a2c1566330c78" + integrity sha512-49fm3xbbUPuzBIOcy2CDpYWqy/X7VBkxVN+DC21e0zIm3+61Z0NZi6J9mqPmSW1BDVk9FIOvuCFyUPjXz93sjA== "@typescript-eslint/types@5.9.0": version "5.9.0" @@ -7935,13 +7935,13 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.33.1": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz#a573bd360790afdcba80844e962d8b2031984f34" - integrity sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA== +"@typescript-eslint/typescript-estree@5.34.0": + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.34.0.tgz#ba7b83f4bf8ccbabf074bbf1baca7a58de3ccb9a" + integrity sha512-mXHAqapJJDVzxauEkfJI96j3D10sd567LlqroyCeJaHnu42sDbjxotGb3XFtGPYKPD9IyLjhsoULML1oI3M86A== dependencies: - "@typescript-eslint/types" "5.33.1" - "@typescript-eslint/visitor-keys" "5.33.1" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/visitor-keys" "5.34.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -7961,15 +7961,15 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.33.1": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.33.1.tgz#171725f924fe1fe82bb776522bb85bc034e88575" - integrity sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ== +"@typescript-eslint/utils@5.34.0": + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.34.0.tgz#0cae98f48d8f9e292e5caa9343611b6faf49e743" + integrity sha512-kWRYybU4Rn++7lm9yu8pbuydRyQsHRoBDIo11k7eqBWTldN4xUdVUMCsHBiE7aoEkFzrUEaZy3iH477vr4xHAQ== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.33.1" - "@typescript-eslint/types" "5.33.1" - "@typescript-eslint/typescript-estree" "5.33.1" + "@typescript-eslint/scope-manager" "5.34.0" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/typescript-estree" "5.34.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -7993,12 +7993,12 @@ "@typescript-eslint/types" "5.20.0" eslint-visitor-keys "^3.0.0" -"@typescript-eslint/visitor-keys@5.33.1": - version "5.33.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz#0155c7571c8cd08956580b880aea327d5c34a18b" - integrity sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg== +"@typescript-eslint/visitor-keys@5.34.0": + version "5.34.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.34.0.tgz#d0fb3e31033e82ddd5de048371ad39eb342b2d40" + integrity sha512-O1moYjOSrab0a2fUvFpsJe0QHtvTC+cR+ovYpgKrAVXzqQyc74mv76TgY6z+aEtjQE2vgZux3CQVtGryqdcOAw== dependencies: - "@typescript-eslint/types" "5.33.1" + "@typescript-eslint/types" "5.34.0" eslint-visitor-keys "^3.3.0" "@typescript-eslint/visitor-keys@5.9.0": From 5296f719f52af23cc7fe4dad68ba480b2505c673 Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Tue, 23 Aug 2022 10:49:38 +1000 Subject: [PATCH 221/275] add verification to test authHandler and signInResolver Signed-off-by: Tyler Davis --- .../cloudflare-access/provider.test.ts | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts index 21ec7371e5..950e9d5ef0 100644 --- a/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts @@ -138,12 +138,24 @@ describe('CloudflareAccessAuthProvider', () => { const provider = new CloudflareAccessAuthProvider({ teamName: 'foobar', resolverContext: {} as AuthResolverContext, - authHandler: async ({ claims }) => ({ - profile: { - email: claims.email, - }, - }), - signInResolver: async () => { + authHandler: async (result) => { + expect(result).toEqual(expect.objectContaining({ + claims: mockClaims, + cfIdentity: mockCfIdentity, + token: mockJwt, + })); + return { + profile: { + email: result.claims.email, + }, + }; + }, + signInResolver: async ({result}) => { + expect(result).toEqual(expect.objectContaining({ + claims: mockClaims, + cfIdentity: mockCfIdentity, + token: mockJwt, + })); return { token: 'eyblob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvamltbXltYXJrdW0iLCJlbnQiOlsidXNlcjpkZWZhdWx0L2ppbW15bWFya3VtIl19.eyblob', From fce5333d159c8245207370bc1224c4653102738a Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Tue, 23 Aug 2022 10:50:26 +1000 Subject: [PATCH 222/275] prettier Signed-off-by: Tyler Davis --- .../cloudflare-access/provider.test.ts | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts index 950e9d5ef0..7570eb9156 100644 --- a/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts @@ -138,24 +138,28 @@ describe('CloudflareAccessAuthProvider', () => { const provider = new CloudflareAccessAuthProvider({ teamName: 'foobar', resolverContext: {} as AuthResolverContext, - authHandler: async (result) => { - expect(result).toEqual(expect.objectContaining({ - claims: mockClaims, - cfIdentity: mockCfIdentity, - token: mockJwt, - })); + authHandler: async result => { + expect(result).toEqual( + expect.objectContaining({ + claims: mockClaims, + cfIdentity: mockCfIdentity, + token: mockJwt, + }), + ); return { profile: { email: result.claims.email, }, }; }, - signInResolver: async ({result}) => { - expect(result).toEqual(expect.objectContaining({ - claims: mockClaims, - cfIdentity: mockCfIdentity, - token: mockJwt, - })); + signInResolver: async ({ result }) => { + expect(result).toEqual( + expect.objectContaining({ + claims: mockClaims, + cfIdentity: mockCfIdentity, + token: mockJwt, + }), + ); return { token: 'eyblob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvamltbXltYXJrdW0iLCJlbnQiOlsidXNlcjpkZWZhdWx0L2ppbW15bWFya3VtIl19.eyblob', From 039b20e4fbe5c359bc61e71d9fc6918d51ac40fd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Aug 2022 04:08:29 +0000 Subject: [PATCH 223/275] fix(deps): update dependency aws-sdk to v2.1200.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1c747baba3..7843ab7413 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8925,9 +8925,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: - version "2.1199.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1199.0.tgz#1279a2086c34232a450f032543fd43e98e3d8232" - integrity sha512-N51EMTCMsiVAJDSKCDTMUheLBlPZ7/c/qyCMGirdoF64/JU+gvZ/u+UqkYPhK7XE80b0GqTj676rtp9OkU1kyg== + version "2.1200.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1200.0.tgz#79d14b342bed68ea07629bbc06f05f5959e4d491" + integrity sha512-rS16H3j40ba2ZDFNxEdC5qzJ09gpQM0f71rYw47IAOlAycvOkCCAIL/6FqCPRWevmL5X/bkULvM+OG7s31oPrg== dependencies: buffer "4.9.2" events "1.1.1" From afbefb1ad734907f04aa4bf324a2b98c7eb592e8 Mon Sep 17 00:00:00 2001 From: Jussi Hallila Date: Tue, 23 Aug 2022 08:24:18 +0200 Subject: [PATCH 224/275] Fix mocked item in test. Signed-off-by: Jussi Hallila --- plugins/tech-insights-backend/package.json | 1 - .../src/service/techInsightsContextBuilder.test.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index dbc39d9e2c..194959d163 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -56,7 +56,6 @@ "devDependencies": { "@backstage/backend-test-utils": "^0.1.27", "@backstage/cli": "^0.18.1", - "@types/luxon": "^2.0.5", "@types/supertest": "^2.0.8", "@types/semver": "^7.3.8", "supertest": "^6.1.3", diff --git a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.test.ts b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.test.ts index 82f504c8a8..7a274e6f96 100644 --- a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.test.ts +++ b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.test.ts @@ -27,7 +27,7 @@ import { Knex } from 'knex'; jest.mock('./fact/FactRetrieverRegistry'); jest.mock('./fact/FactRetrieverEngine', () => ({ - FactRetrieverEngine: { + DefaultFactRetrieverEngine: { create: jest.fn().mockResolvedValue({ schedule: jest.fn(), }), From 43af5770912ebbca00f6000497f2090d5b4017bb Mon Sep 17 00:00:00 2001 From: Niek te Grootenhuis Date: Tue, 23 Aug 2022 10:10:40 +0200 Subject: [PATCH 225/275] chore: changeset patch instead of minor Signed-off-by: Niek te Grootenhuis --- .changeset/strong-planes-return.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/strong-planes-return.md b/.changeset/strong-planes-return.md index d7f02934c9..5b5648528a 100644 --- a/.changeset/strong-planes-return.md +++ b/.changeset/strong-planes-return.md @@ -1,6 +1,6 @@ --- -'@backstage/plugin-tech-insights-backend': minor -'@backstage/plugin-tech-insights-node': minor +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-node': patch --- Support for timeout in FactRetrieverRegistrationOptions From 1a54275cdb785e10bb49f3857fc98fbf519d214c Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Mar 2022 15:57:54 +0100 Subject: [PATCH 226/275] chore: got something half working Signed-off-by: blam --- packages/cli/package.json | 4 + packages/cli/src/lib/bundler/transforms.ts | 65 ++-- yarn.lock | 355 ++++++++++++++++++++- 3 files changed, 394 insertions(+), 30 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 34987bd19b..d09967f901 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -41,6 +41,7 @@ "@hot-loader/react-dom-v17": "npm:@hot-loader/react-dom@^17.0.2", "@manypkg/get-packages": "^1.1.3", "@octokit/request": "^6.0.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", "@rollup/plugin-commonjs": "^22.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", @@ -50,6 +51,7 @@ "@spotify/eslint-config-typescript": "^14.0.0", "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", + "@swc/core": "^1.2.160", "@svgr/plugin-jsx": "6.3.x", "@svgr/plugin-svgo": "6.3.x", "@svgr/rollup": "6.3.x", @@ -103,6 +105,7 @@ "process": "^0.11.10", "react-dev-utils": "^12.0.0-next.60", "react-hot-loader": "^4.13.0", + "react-refresh": "^0.11.0", "recursive-readdir": "^2.2.2", "replace-in-file": "^6.0.0", "rollup": "^2.60.2", @@ -114,6 +117,7 @@ "semver": "^7.3.2", "style-loader": "^3.3.1", "sucrase": "^3.20.2", + "swc-loader": "^0.1.15", "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", "util": "^0.12.3", diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index a24c24a194..8fc90cc9da 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import webpack, { ModuleOptions, WebpackPluginInstance } from 'webpack'; +import { ModuleOptions, WebpackPluginInstance } from 'webpack'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import { svgrTemplate } from '../svgrTemplate'; +import ReactRefreshPlugin from '@pmmmwh/react-refresh-webpack-plugin'; type Transforms = { loaders: ModuleOptions['rules']; @@ -29,9 +30,7 @@ type TransformOptions = { }; export const transforms = (options: TransformOptions): Transforms => { - const { isDev, isBackend } = options; - - const extraTransforms = isDev && !isBackend ? ['react-hot-loader'] : []; + const { isDev } = options; // This ensures that styles inserted from the style-loader and any // async style chunks are always given lower priority than JSS styles. @@ -54,22 +53,52 @@ export const transforms = (options: TransformOptions): Transforms => { { test: /\.(tsx?)$/, exclude: /node_modules/, - loader: require.resolve('@sucrase/webpack-loader'), - options: { - transforms: ['typescript', 'jsx', ...extraTransforms], - disableESTransforms: true, - production: !isDev, - }, + use: [ + { + loader: 'swc-loader', + options: { + env: { mode: 'usage' }, + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + dynamicImport: true, + }, + transform: { + react: { + runtime: 'automatic', + refresh: isDev, + }, + }, + }, + }, + }, + ], }, { test: /\.(jsx?|mjs|cjs)$/, exclude: /node_modules/, - loader: require.resolve('@sucrase/webpack-loader'), - options: { - transforms: ['jsx', ...extraTransforms], - disableESTransforms: true, - production: !isDev, - }, + use: [ + { + loader: 'swc-loader', + options: { + env: { mode: 'usage' }, + jsc: { + parser: { + syntax: 'ecmascript', + jsx: true, + dynamicImport: true, + }, + transform: { + react: { + runtime: 'automatic', + refresh: isDev, + }, + }, + }, + }, + }, + ], }, { test: /\.(js|mjs|cjs)/, @@ -83,7 +112,7 @@ export const transforms = (options: TransformOptions): Transforms => { { loader: require.resolve('@sucrase/webpack-loader'), options: { - transforms: ['jsx', ...extraTransforms], + transforms: ['jsx'], disableESTransforms: true, production: !isDev, }, @@ -151,7 +180,7 @@ export const transforms = (options: TransformOptions): Transforms => { const plugins = new Array(); if (isDev) { - plugins.push(new webpack.HotModuleReplacementPlugin()); + plugins.push(new ReactRefreshPlugin()); } else { plugins.push( new MiniCssExtractPlugin({ diff --git a/yarn.lock b/yarn.lock index 92a8cba4b1..7b04241bb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -483,6 +483,27 @@ json5 "^2.1.2" semver "^6.3.0" +"@babel/core@^7.15.5": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" + integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + "@babel/core@^7.18.5": version "7.18.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" @@ -522,6 +543,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.18.10": + version "7.18.12" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" + integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== + dependencies: + "@babel/types" "^7.18.10" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/generator@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" @@ -639,6 +669,18 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" + integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -790,7 +832,7 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== -"@babel/helper-remap-async-to-generator@^7.18.6": +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== @@ -871,6 +913,11 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + "@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" @@ -946,6 +993,11 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== +"@babel/parser@^7.18.10", "@babel/parser@^7.18.11": + version "7.18.11" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" + integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== + "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" @@ -967,6 +1019,16 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" +"@babel/plugin-proposal-async-generator-functions@^7.18.10": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" + integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-proposal-async-generator-functions@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" @@ -1607,6 +1669,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-react-constant-elements@^7.14.5": + version "7.18.12" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz#edf3bec47eb98f14e84fa0af137fcc6aad8e0443" + integrity sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-transform-react-constant-elements@^7.17.12": version "7.18.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz#ff6aeedd38f57ba6b41dcf824fcc8bcedb3e783f" @@ -1756,6 +1825,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-typescript" "^7.18.6" +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-transform-unicode-escapes@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" @@ -1771,6 +1847,87 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/preset-env@^7.15.6": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" + integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.10" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + "@babel/preset-env@^7.18.2": version "7.18.9" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" @@ -1872,7 +2029,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.17.12": +"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.17.12": version "7.18.6" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== @@ -1893,7 +2050,7 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/preset-typescript@^7.17.12": +"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.17.12": version "7.18.6" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== @@ -1959,6 +2116,15 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/template@^7.18.10": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/template@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" @@ -2000,6 +2166,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.10": + version "7.18.11" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" + integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.11" + "@babel/types" "^7.18.10" + debug "^4.1.0" + globals "^11.1.0" + "@babel/traverse@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" @@ -2032,6 +2214,15 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.18.10": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" + integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" @@ -5747,6 +5938,21 @@ tslib "^2.4.0" webcrypto-core "^1.7.4" +"@pmmmwh/react-refresh-webpack-plugin@^0.5.4": + version "0.5.4" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz#df0d0d855fc527db48aac93c218a0bf4ada41f99" + integrity sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.8.1" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + source-map "^0.7.3" + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -6172,7 +6378,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.3.1" "@svgr/babel-plugin-transform-svg-component" "^6.3.1" -"@svgr/core@^6.3.1": +"@svgr/core@^6.2.1", "@svgr/core@^6.3.1": version "6.3.1" resolved "https://registry.npmjs.org/@svgr/core/-/core-6.3.1.tgz#752adf49d8d5473b15d76ca741961de093f715bd" integrity sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA== @@ -6189,7 +6395,7 @@ "@babel/types" "^7.18.4" entities "^4.3.0" -"@svgr/plugin-jsx@6.3.x", "@svgr/plugin-jsx@^6.3.1": +"@svgr/plugin-jsx@6.3.x", "@svgr/plugin-jsx@^6.2.1", "@svgr/plugin-jsx@^6.3.1": version "6.3.1" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz#de7b2de824296b836d6b874d498377896e367f50" integrity sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw== @@ -6199,7 +6405,7 @@ "@svgr/hast-util-to-babel-ast" "^6.3.1" svg-parser "^2.0.4" -"@svgr/plugin-svgo@6.3.x", "@svgr/plugin-svgo@^6.3.1": +"@svgr/plugin-svgo@6.3.x", "@svgr/plugin-svgo@^6.2.0", "@svgr/plugin-svgo@^6.3.1": version "6.3.1" resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz#3c1ff2efaed10e5c5d35a6cae7bacaedc18b5d4a" integrity sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw== @@ -6237,6 +6443,90 @@ "@svgr/plugin-jsx" "^6.3.1" "@svgr/plugin-svgo" "^6.3.1" +"@swc/core-android-arm-eabi@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.160.tgz#f5aaf852e9d104b4ad58d34851bac3bd41a64a60" + integrity sha512-VzFP7tYgvpkUhd8wgyNtERqvoPBBDretyMFxAxPe2SxClaBs9Ka95PdiPPZalRq+vFCb/dFxD8Vhz+XO16Kpjg== + +"@swc/core-android-arm64@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.160.tgz#458f7e6aff52958e0764c34500528c18bbb31894" + integrity sha512-m+xqQaa7TqW3Vm9MUvITtdU8OlAc/9yT+TgOS4l8WlfFI87IDnLLfinKKEp+xfKwzYDdIsh+sC+jdGdIBTMB+Q== + +"@swc/core-darwin-arm64@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.160.tgz#34d48b449de0eae9fddd71b064d36aa5353f22cc" + integrity sha512-9bG70KYKvjNf7tZtjOu1h4kDZPtoidZptIXPGSHuUgJ1BbSJYpfRR5xAmq4k37+GqOjIPJp4+lSGQPa2HfejpA== + +"@swc/core-darwin-x64@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.160.tgz#109d92457df928717c73055f01c99ca88815000d" + integrity sha512-+b4HdKAVf/XPZ9DjgG2axGLbquPEuYwEP3zeWgbWn0s0FYQ7WTFxznf3YrTJE9MYadJeCOs3U80E2xVAtRRS9Q== + +"@swc/core-freebsd-x64@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.160.tgz#debdccce0129aa856e496f06981cc8e8271fcb41" + integrity sha512-E5agJwv+RVMoZ8FQIPSO5wLPDQx6jqcMpV207EB3pPaxPWGe4n3DH3vcibHp80RACDNdiaqo5lBeBnGJI4ithw== + +"@swc/core-linux-arm-gnueabihf@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.160.tgz#27669f1084c152153c017fc320b6a92cd6b71244" + integrity sha512-uCttZRNx+lWVhCYGC6/pGUej08g1SQc5am6R9NVFh111goytcdlPnC4jV8oWzq2QhDWkkKxLoP2CZOytzI4+0w== + +"@swc/core-linux-arm64-gnu@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.160.tgz#a8ecadee30639c298e9c2175099d55c1c82f912e" + integrity sha512-sB18roiv8m/zsY6tXLSrbUls0eKkSkxOEF0ennXVEtz97rMJ+WWnkOc8gI+rUpj3MHbVAIxyDNyyZU4cH5g1jQ== + +"@swc/core-linux-arm64-musl@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.160.tgz#1a2cf738c8a394fcb21fe91f13b1fb9c775cca0b" + integrity sha512-PJ7Ukb+BRR3pGYcUag8qRWOB11eByc5YLx/xAMSc3bRmaYW/oj6s8k+1DYiR//BAuNQdf14MpMFzDuWiDEUh7A== + +"@swc/core-linux-x64-gnu@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.160.tgz#f54c4e0510b69d68f56e681050b717991627ad68" + integrity sha512-wVh8Q86xz3t0y5zoUryWQ64bFG/YxdcykBgaog8lU9xkFb1KSqVRE9ia7aKA12/ZtAfpJZLRBleZxBAcaCg9FQ== + +"@swc/core-linux-x64-musl@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.160.tgz#6f8ec092d8b65a9750faf0a2323b52f39c5bd540" + integrity sha512-AnWdarl9WWuDdbc2AX1w76W1jaekSCokxRrWdSGUgQytaZRtybKZEgThvJCQDrSlYQD4XDOhhVRCurTvy4JsfQ== + +"@swc/core-win32-arm64-msvc@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.160.tgz#b4f226ab86e550762b5cc83d0ebe4cf43f1a3624" + integrity sha512-ScL27mZRTwEIqBIv9RY34nQvyBvhosiM5Lus4dCFmS71flPcAEv7hJgy4GE3YUQV0ryGNK9NaO43H8sAyNwKVQ== + +"@swc/core-win32-ia32-msvc@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.160.tgz#243bb5b15eab76f4c8f004381d63c6d72a8cef68" + integrity sha512-e75zbWlhlyrd5HdrYzELa6OlZxgyaVpJj+c9xMD95HcdklVbmsyt1vuqRxMyqaZUDLyehwwCDRX/ZeDme//M/A== + +"@swc/core-win32-x64-msvc@1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.160.tgz#8708986433e891687bb4a836a683f90bc95e1fce" + integrity sha512-GAYT+WzYQY4sr17S21yJh4flJp/sQ62mAs6RfN89p7jIWgm0Bl/SooRl6ocsftTlnZm7K7QC8zmQVeNCWDCLPw== + +"@swc/core@^1.2.160": + version "1.2.160" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.160.tgz#d91730a5021d4c8aef87855dde11fc8931496176" + integrity sha512-nXoC7HA+aY7AtBPsiqGXocoRLAzzA7MV+InWQtILN7Uru4hB9+rLnLCPc3zSdg7pgnxJLa1tHup1Rz7Vv6TcIQ== + optionalDependencies: + "@swc/core-android-arm-eabi" "1.2.160" + "@swc/core-android-arm64" "1.2.160" + "@swc/core-darwin-arm64" "1.2.160" + "@swc/core-darwin-x64" "1.2.160" + "@swc/core-freebsd-x64" "1.2.160" + "@swc/core-linux-arm-gnueabihf" "1.2.160" + "@swc/core-linux-arm64-gnu" "1.2.160" + "@swc/core-linux-arm64-musl" "1.2.160" + "@swc/core-linux-x64-gnu" "1.2.160" + "@swc/core-linux-x64-musl" "1.2.160" + "@swc/core-win32-arm64-msvc" "1.2.160" + "@swc/core-win32-ia32-msvc" "1.2.160" + "@swc/core-win32-x64-msvc" "1.2.160" + "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -9050,6 +9340,15 @@ babel-plugin-polyfill-corejs2@^0.3.1: "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" +babel-plugin-polyfill-corejs2@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" + integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.2" + semver "^6.1.1" + babel-plugin-polyfill-corejs3@^0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" @@ -9058,6 +9357,14 @@ babel-plugin-polyfill-corejs3@^0.5.2: "@babel/helper-define-polyfill-provider" "^0.3.1" core-js-compat "^3.21.0" +babel-plugin-polyfill-corejs3@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + core-js-compat "^3.21.0" + babel-plugin-polyfill-regenerator@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" @@ -9065,6 +9372,13 @@ babel-plugin-polyfill-regenerator@^0.3.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" +babel-plugin-polyfill-regenerator@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" + integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + "babel-plugin-styled-components@>= 1.12.0": version "2.0.7" resolved "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" @@ -10507,6 +10821,11 @@ common-ancestor-path@^1.0.1: resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + common-tags@1.8.2, common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" @@ -10867,7 +11186,7 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1: browserslist "^4.21.2" semver "7.0.0" -core-js-pure@^3.20.2, core-js-pure@^3.6.5: +core-js-pure@^3.20.2, core-js-pure@^3.6.5, core-js-pure@^3.8.1: version "3.21.1" resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== @@ -14923,7 +15242,7 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^2.3.2: +html-entities@^2.1.0, html-entities@^2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== @@ -22080,6 +22399,11 @@ react-redux@^7.1.1, react-redux@^7.2.4: prop-types "^15.7.2" react-is "^16.13.1" +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + react-resize-detector@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-2.3.0.tgz#57bad1ae26a28a62a2ddb678ba6ffdf8fa2b599c" @@ -23250,7 +23574,7 @@ schema-utils@2.7.0: ajv "^6.12.2" ajv-keywords "^3.4.1" -schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== @@ -24641,6 +24965,13 @@ swap-case@^2.0.2: dependencies: tslib "^2.0.3" +swc-loader@^0.1.15: + version "0.1.15" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.1.15.tgz#cb9c630ccfbb46dabc5aebc5560cced658e32992" + integrity sha512-cn1WPIeQJvXM4bbo3OwdEIapsQ4uUGOfyFj0h2+2+brT0k76DCGnZXDE2KmcqTd2JSQ+b61z2NPMib7eEwMYYw== + dependencies: + loader-utils "^2.0.0" + swr@^1.1.2: version "1.3.0" resolved "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" @@ -26490,9 +26821,9 @@ ws@8.8.1, ws@^8.3.0: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^7.3.1, ws@^7.4.6: - version "7.5.7" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== + version "7.5.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" + integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== ws@^8.4.2: version "8.5.0" From 008dbb4498edbe3b35d238e56314c0580320fa8d Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 22 Mar 2022 16:50:08 +0100 Subject: [PATCH 227/275] chore: this works! Signed-off-by: blam --- packages/cli/package.json | 2 +- packages/cli/src/lib/bundler/config.ts | 25 +- packages/cli/src/lib/bundler/transforms.ts | 3 +- yarn.lock | 253 ++------------------- 4 files changed, 34 insertions(+), 249 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index d09967f901..dc18939fef 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -121,7 +121,7 @@ "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", "util": "^0.12.3", - "webpack": "^5.66.0", + "webpack": "^5.70.0", "webpack-dev-server": "^4.7.3", "webpack-node-externals": "^3.0.0", "yaml": "^2.0.0", diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index 057474ea9a..cb85398004 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -183,11 +183,12 @@ export async function createConfig( }, plugins: [ new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ], + !isDev && + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson], + ), + ].filter(Boolean), alias: resolveAliases, }, module: { @@ -277,14 +278,12 @@ export async function createBackendConfig( modules: [paths.rootNodeModules, ...moduleDirs], plugins: [ new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ], - alias: { - 'react-dom': '@hot-loader/react-dom', - }, + !isDev && + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson], + ), + ].filter(Boolean), }, module: { rules: loaders, diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index 8fc90cc9da..f7093c97fe 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { ModuleOptions, WebpackPluginInstance } from 'webpack'; +import webpack, { ModuleOptions, WebpackPluginInstance } from 'webpack'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import { svgrTemplate } from '../svgrTemplate'; import ReactRefreshPlugin from '@pmmmwh/react-refresh-webpack-plugin'; @@ -181,6 +181,7 @@ export const transforms = (options: TransformOptions): Transforms => { if (isDev) { plugins.push(new ReactRefreshPlugin()); + // plugins.push(new webpack.HotModuleReplacementPlugin()); } else { plugins.push( new MiniCssExtractPlugin({ diff --git a/yarn.lock b/yarn.lock index 7b04241bb2..f997da81e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -483,27 +483,6 @@ json5 "^2.1.2" semver "^6.3.0" -"@babel/core@^7.15.5": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" - integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - "@babel/core@^7.18.5": version "7.18.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" @@ -543,15 +522,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.18.10": - version "7.18.12" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" - integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== - dependencies: - "@babel/types" "^7.18.10" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - "@babel/generator@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" @@ -669,18 +639,6 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -832,7 +790,7 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": +"@babel/helper-remap-async-to-generator@^7.18.6": version "7.18.9" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== @@ -913,11 +871,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - "@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" @@ -993,11 +946,6 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== -"@babel/parser@^7.18.10", "@babel/parser@^7.18.11": - version "7.18.11" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" - integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== - "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" @@ -1019,16 +967,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-proposal-async-generator-functions@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" @@ -1669,13 +1607,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-constant-elements@^7.14.5": - version "7.18.12" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz#edf3bec47eb98f14e84fa0af137fcc6aad8e0443" - integrity sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-transform-react-constant-elements@^7.17.12": version "7.18.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz#ff6aeedd38f57ba6b41dcf824fcc8bcedb3e783f" @@ -1825,13 +1756,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-typescript" "^7.18.6" -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-transform-unicode-escapes@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" @@ -1847,87 +1771,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.15.6": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - "@babel/preset-env@^7.18.2": version "7.18.9" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" @@ -2029,7 +1872,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.17.12": +"@babel/preset-react@^7.17.12": version "7.18.6" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== @@ -2050,7 +1893,7 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.17.12": +"@babel/preset-typescript@^7.17.12": version "7.18.6" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== @@ -2116,15 +1959,6 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - "@babel/template@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" @@ -2166,22 +2000,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.18.10": - version "7.18.11" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" - integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.11" - "@babel/types" "^7.18.10" - debug "^4.1.0" - globals "^11.1.0" - "@babel/traverse@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" @@ -2214,15 +2032,6 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" - integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" @@ -6378,7 +6187,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.3.1" "@svgr/babel-plugin-transform-svg-component" "^6.3.1" -"@svgr/core@^6.2.1", "@svgr/core@^6.3.1": +"@svgr/core@^6.3.1": version "6.3.1" resolved "https://registry.npmjs.org/@svgr/core/-/core-6.3.1.tgz#752adf49d8d5473b15d76ca741961de093f715bd" integrity sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA== @@ -6395,7 +6204,7 @@ "@babel/types" "^7.18.4" entities "^4.3.0" -"@svgr/plugin-jsx@6.3.x", "@svgr/plugin-jsx@^6.2.1", "@svgr/plugin-jsx@^6.3.1": +"@svgr/plugin-jsx@6.3.x", "@svgr/plugin-jsx@^6.3.1": version "6.3.1" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz#de7b2de824296b836d6b874d498377896e367f50" integrity sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw== @@ -6405,7 +6214,7 @@ "@svgr/hast-util-to-babel-ast" "^6.3.1" svg-parser "^2.0.4" -"@svgr/plugin-svgo@6.3.x", "@svgr/plugin-svgo@^6.2.0", "@svgr/plugin-svgo@^6.3.1": +"@svgr/plugin-svgo@6.3.x", "@svgr/plugin-svgo@^6.3.1": version "6.3.1" resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz#3c1ff2efaed10e5c5d35a6cae7bacaedc18b5d4a" integrity sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw== @@ -9340,15 +9149,6 @@ babel-plugin-polyfill-corejs2@^0.3.1: "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" - semver "^6.1.1" - babel-plugin-polyfill-corejs3@^0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" @@ -9357,14 +9157,6 @@ babel-plugin-polyfill-corejs3@^0.5.2: "@babel/helper-define-polyfill-provider" "^0.3.1" core-js-compat "^3.21.0" -babel-plugin-polyfill-corejs3@^0.5.3: - version "0.5.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - babel-plugin-polyfill-regenerator@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" @@ -9372,13 +9164,6 @@ babel-plugin-polyfill-regenerator@^0.3.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - "babel-plugin-styled-components@>= 1.12.0": version "2.0.7" resolved "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" @@ -12671,10 +12456,10 @@ engine.io@~3.5.0: engine.io-parser "~2.2.0" ws "~7.4.2" -enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== +enhanced-resolve@^5.9.2: + version "5.9.3" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -17241,7 +17026,7 @@ json-buffer@3.0.1, json-buffer@^3.0.1, json-buffer@~3.0.1: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -26533,34 +26318,34 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5, webpack@^5.66.0: - version "5.74.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" - integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== +webpack@^5, webpack@^5.70.0: + version "5.70.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" + integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.7.1" + acorn "^8.4.1" acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.10.0" + enhanced-resolve "^5.9.2" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" + json-parse-better-errors "^1.0.2" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.4.0" + watchpack "^2.3.1" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: From a963c36ea60644b0fbcbeee18a62b27c3f962126 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 23 Mar 2022 11:19:27 +0100 Subject: [PATCH 228/275] chore: moving jest to swc Signed-off-by: blam --- packages/app/package.json | 1 - packages/app/src/App.tsx | 3 +- packages/cli/config/jest.js | 3 +- packages/cli/package.json | 2 +- packages/cli/src/lib/bundler/config.ts | 43 ++++++++++++++-------- packages/cli/src/lib/bundler/transforms.ts | 17 +++++---- yarn.lock | 31 +++++++++++----- 7 files changed, 63 insertions(+), 37 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index d4e0644f3a..bcc9e63956 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -74,7 +74,6 @@ "prop-types": "^15.7.2", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-hot-loader": "^4.13.0", "react-router": "6.0.0-beta.0", "react-router-dom": "6.0.0-beta.0", "react-use": "^17.2.4", diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index a0390d96e8..f5152ffe2e 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -85,7 +85,6 @@ import { import { AdvancedSettings } from './components/advancedSettings'; import AlarmIcon from '@material-ui/icons/Alarm'; import React from 'react'; -import { hot } from 'react-hot-loader/root'; import { Navigate, Route } from 'react-router'; import { apis } from './apis'; import { entityPage } from './components/catalog/EntityPage'; @@ -276,4 +275,4 @@ const App = () => ( ); -export default hot(App); +export default App; diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 21f4462eab..da7a929824 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -131,11 +131,12 @@ async function getProjectConfig(targetPath, displayName) { transform: { '\\.(js|jsx|ts|tsx|mjs|cjs)$': [ - require.resolve('./jestSucraseTransform.js'), + '@swc/jest', { enableSourceMaps: envOptions.enableSourceMaps || envOptions.nextTests, }, ], + // '^.+\\.(t|j)sx?$': '@swc/jest', '\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$': require.resolve('./jestFileTransform.js'), '\\.(yaml)$': require.resolve('jest-transform-yaml'), diff --git a/packages/cli/package.json b/packages/cli/package.json index dc18939fef..a1038ef954 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -52,6 +52,7 @@ "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", "@swc/core": "^1.2.160", + "@swc/jest": "^0.2.20", "@svgr/plugin-jsx": "6.3.x", "@svgr/plugin-svgo": "6.3.x", "@svgr/rollup": "6.3.x", @@ -116,7 +117,6 @@ "run-script-webpack-plugin": "^0.1.0", "semver": "^7.3.2", "style-loader": "^3.3.1", - "sucrase": "^3.20.2", "swc-loader": "^0.1.15", "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index cb85398004..0a8f8e988b 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -150,6 +150,18 @@ export async function createConfig( console.warn(`WARNING: Failed to read react-dom version, ${error}`); } + const resolvePlugins: webpack.ResolvePluginInstance[] = [ + new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), + ]; + + if (!isDev) { + resolvePlugins.push( + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson], + ), + ); + } return { mode: isDev ? 'development' : 'production', profile: false, @@ -181,14 +193,7 @@ export async function createConfig( http: false, util: require.resolve('util/'), }, - plugins: [ - new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - !isDev && - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ].filter(Boolean), + plugins: resolvePlugins, alias: resolveAliases, }, module: { @@ -237,6 +242,19 @@ export async function createBackendConfig( runScriptNodeArgs.push('--inspect-brk'); } + const resolvePlugins: webpack.ResolvePluginInstance[] = [ + new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), + ]; + + if (!isDev) { + resolvePlugins.push( + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson], + ), + ); + } + return { mode: isDev ? 'development' : 'production', profile: false, @@ -276,14 +294,7 @@ export async function createBackendConfig( extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'], mainFields: ['main'], modules: [paths.rootNodeModules, ...moduleDirs], - plugins: [ - new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - !isDev && - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ].filter(Boolean), + plugins: resolvePlugins, }, module: { rules: loaders, diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index f7093c97fe..cb151e67c3 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import webpack, { ModuleOptions, WebpackPluginInstance } from 'webpack'; +import { ModuleOptions, WebpackPluginInstance } from 'webpack'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import { svgrTemplate } from '../svgrTemplate'; import ReactRefreshPlugin from '@pmmmwh/react-refresh-webpack-plugin'; @@ -110,11 +110,10 @@ export const transforms = (options: TransformOptions): Transforms => { test: [/\.icon\.svg$/], use: [ { - loader: require.resolve('@sucrase/webpack-loader'), + loader: require.resolve('esbuild-loader'), options: { - transforms: ['jsx'], - disableESTransforms: true, - production: !isDev, + loader: 'jsx', + target: 'es2015', }, }, { @@ -180,8 +179,12 @@ export const transforms = (options: TransformOptions): Transforms => { const plugins = new Array(); if (isDev) { - plugins.push(new ReactRefreshPlugin()); - // plugins.push(new webpack.HotModuleReplacementPlugin()); + plugins.push( + new ReactRefreshPlugin({ + esModule: true, + overlay: { sockProtocol: 'ws' }, + }), + ); } else { plugins.push( new MiniCssExtractPlugin({ diff --git a/yarn.lock b/yarn.lock index f997da81e1..992d49ca5f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3354,6 +3354,13 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/create-cache-key-function@^27.4.2": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" + integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ== + dependencies: + "@jest/types" "^27.5.1" + "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" @@ -6336,6 +6343,13 @@ "@swc/core-win32-ia32-msvc" "1.2.160" "@swc/core-win32-x64-msvc" "1.2.160" +"@swc/jest@^0.2.20": + version "0.2.20" + resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.20.tgz#2bddb4348fb730296b86cdcd96748be131b11395" + integrity sha512-5qSUBYY1wyIMn7p0Vl9qqV4hMI69oJwZCIPUpBsTFWN2wlwn6RDugzdgCn+bLXVYh+Cxi8bJcZ1uumDgsoL+FA== + dependencies: + "@jest/create-cache-key-function" "^27.4.2" + "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -13224,7 +13238,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: prop-types "^15.7.2" react "^17.0.2" react-dom "^17.0.2" - react-hot-loader "^4.13.0" react-router "6.0.0-beta.0" react-router-dom "6.0.0-beta.0" react-use "^17.2.4" @@ -21011,14 +21024,14 @@ pino@^5.12.2: quick-format-unescaped "^3.0.3" sonic-boom "^0.7.5" -pirates@^4.0.0, pirates@^4.0.1: +pirates@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: node-modules-regexp "^1.0.0" -pirates@^4.0.4: +pirates@^4.0.1, pirates@^4.0.4: version "4.0.5" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== @@ -24596,7 +24609,7 @@ subscriptions-transport-ws@^0.11.0: symbol-observable "^1.0.4" ws "^5.2.0 || ^6.0.0 || ^7.0.0" -sucrase@^3.18.0, sucrase@^3.20.2: +sucrase@^3.18.0: version "3.25.0" resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.25.0.tgz#6dffa34e614b3347877507a4380cc4f022b7b7aa" integrity sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ== @@ -24982,7 +24995,7 @@ textextensions@^5.12.0, textextensions@^5.13.0: thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: thenify ">= 3.1.0 < 4" @@ -25277,9 +25290,9 @@ ts-easing@^0.2.0: integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== ts-interface-checker@^0.1.9: - version "0.1.10" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.10.tgz#b68a49e37e90a05797e590f08494dd528bf383cf" - integrity sha512-UJYuKET7ez7ry0CnvfY6fPIUIZDw+UI3qvTUQeS2MyI4TgEeWAUBqy185LeaHcdJ9zG2dgFpPJU/AecXU0Afug== + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== ts-log@^2.2.3: version "2.2.3" @@ -26187,7 +26200,7 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" -watchpack@^2.0.0-beta.10, watchpack@^2.4.0: +watchpack@^2.0.0-beta.10, watchpack@^2.3.1: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== From 9c1ee4d56bd3952162bf7c43df5c4cc3f74f1de1 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 23 Mar 2022 13:41:38 +0100 Subject: [PATCH 229/275] chore: some small changes Signed-off-by: blam --- ...eInstanceGithubCredentialsProvider.test.ts | 2 +- .../src/api/CatalogImportClient.test.ts | 2 +- .../src/service/router.test.ts | 25 ++++++++++--------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts b/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts index d738edf417..1dcc45c1ef 100644 --- a/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts +++ b/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts @@ -25,7 +25,7 @@ const octokit = { }, }; -jest.doMock('@octokit/rest', () => { +jest.mock('@octokit/rest', () => { class Octokit { constructor() { return octokit; diff --git a/plugins/catalog-import/src/api/CatalogImportClient.test.ts b/plugins/catalog-import/src/api/CatalogImportClient.test.ts index 5a65738d61..98aea30638 100644 --- a/plugins/catalog-import/src/api/CatalogImportClient.test.ts +++ b/plugins/catalog-import/src/api/CatalogImportClient.test.ts @@ -37,7 +37,7 @@ const octokit = { }, }; -jest.doMock('@octokit/rest', () => { +jest.mock('@octokit/rest', () => { class Octokit { constructor() { return octokit; diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index e59f222e2d..7ddec46078 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -15,18 +15,6 @@ */ const mockAccess = jest.fn(); -jest.doMock('fs-extra', () => ({ - access: mockAccess, - promises: { - access: mockAccess, - }, - constants: { - F_OK: 0, - W_OK: 1, - }, - mkdir: jest.fn(), - remove: jest.fn(), -})); import { DatabaseManager, @@ -55,6 +43,19 @@ import { import { createRouter, DatabaseTaskStore, TaskBroker } from '../index'; import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; +jest.mock('fs-extra', () => ({ + access: mockAccess, + promises: { + access: mockAccess, + }, + constants: { + F_OK: 0, + W_OK: 1, + }, + mkdir: jest.fn(), + remove: jest.fn(), +})); + function createDatabase(): PluginDatabaseManager { return DatabaseManager.fromConfig( new ConfigReader({ From 1c47698ad450fe08285282a007466ab22c8b0060 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 23 Mar 2022 15:28:07 +0100 Subject: [PATCH 230/275] chore: tests mocking out setState is probably bad... let's make the test a little better, Signed-off-by: blam --- app-config.yaml | 3 ++- packages/cli/config/jest.js | 1 - .../BitriseBuildDetailsDialog.test.tsx | 14 +++++--------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 32b53da236..d69fa5cf79 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -181,7 +181,8 @@ integrations: # rawBaseUrl: https://ghe.example.net/raw # token: ${GHE_TOKEN} gitlab: - - host: gitlab.com + - host: lols.lols.com + apiBaseUrl: https://lols.lols.com/api token: ${GITLAB_TOKEN} ### Example for how to add a bitbucket cloud integration # bitbucketCloud: diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index da7a929824..c03602b495 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -150,7 +150,6 @@ async function getProjectConfig(targetPath, displayName) { : undefined, transformIgnorePatterns: [`/node_modules/(?:${transformIgnorePattern})/`], - ...getRoleConfig(closestPkgJson?.backstage?.role), }; diff --git a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx index 19e97628df..2dcffc3bb3 100644 --- a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx +++ b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx @@ -20,7 +20,7 @@ import { BitriseBuildDetailsDialog } from './BitriseBuildDetailsDialog'; import { BitriseBuildResult } from '../../api/bitriseApi.model'; jest.mock('../BitriseArtifactsComponent', () => ({ - BitriseArtifactsComponent: (_props: { build: string }) => <>, + BitriseArtifactsComponent: (_props: { build: string }) => <>VISIBLE, })); describe('BitriseArtifactsComponent', () => { @@ -42,18 +42,14 @@ describe('BitriseArtifactsComponent', () => { expect(await rendered.findByTestId('btn')).toBeInTheDocument(); }); - it('should change the state when the button is clicked', async () => { - const setOpen = jest.fn(); - const useStateMock: any = (initState: any) => [initState, setOpen]; - - jest.spyOn(React, 'useState').mockImplementation(useStateMock); - + it('should open the modal when clicked to render the ArtifactsComponent', async () => { const rendered = renderComponent(); - const btn = await rendered.findByTestId('btn'); + expect(await rendered.queryByText('VISIBLE')).not.toBeInTheDocument(); + btn.click(); - expect(setOpen).toHaveBeenCalled(); + expect(rendered.getByText('VISIBLE')).toBeInTheDocument(); }); }); From 3d9e3cdc4bad1ab290beb14851f4fccd91b7dc38 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 23 Mar 2022 19:20:02 +0100 Subject: [PATCH 231/275] chore: don't transform `json-schema` either Signed-off-by: blam --- packages/cli/config/jest.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index c03602b495..e10f2d1ce1 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -37,6 +37,7 @@ const transformIgnorePattern = [ 'react-dom', 'highlight\\.js', 'prismjs', + 'json-schema', 'react-use', 'typescript', ].join('|'); From 4c6cd4f7dfe88eefe02bc8dea2db5987c3772ef0 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 24 Mar 2022 10:20:20 +0100 Subject: [PATCH 232/275] chore: mocks don't work if they're deconstructed? Signed-off-by: blam --- .../backend-common/src/reading/AwsS3UrlReader.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index 7c314cf036..5d471dfae7 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import aws, { Credentials, S3 } from 'aws-sdk'; +import aws from 'aws-sdk'; import { CredentialsOptions } from 'aws-sdk/lib/credentials'; import { ReaderFactory, @@ -126,7 +126,7 @@ export class AwsS3UrlReader implements UrlReader { return integrations.awsS3.list().map(integration => { const credentials = AwsS3UrlReader.buildCredentials(integration); - const s3 = new S3({ + const s3 = new aws.S3({ apiVersion: '2006-03-01', credentials, endpoint: integration.config.endpoint, @@ -145,7 +145,7 @@ export class AwsS3UrlReader implements UrlReader { constructor( private readonly integration: AwsS3Integration, private readonly deps: { - s3: S3; + s3: aws.S3; treeResponseFactory: ReadTreeResponseFactory; }, ) {} @@ -156,17 +156,17 @@ export class AwsS3UrlReader implements UrlReader { */ private static buildCredentials( integration?: AwsS3Integration, - ): Credentials | CredentialsOptions | undefined { + ): aws.Credentials | CredentialsOptions | undefined { if (!integration) { return undefined; } const accessKeyId = integration.config.accessKeyId; const secretAccessKey = integration.config.secretAccessKey; - let explicitCredentials: Credentials | undefined; + let explicitCredentials: aws.Credentials | undefined; if (accessKeyId && secretAccessKey) { - explicitCredentials = new Credentials({ + explicitCredentials = new aws.Credentials({ accessKeyId, secretAccessKey, }); From 3d191913c24d3e263faf8a2404e790ed98f3af45 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 28 Mar 2022 14:30:00 +0200 Subject: [PATCH 233/275] chore: api-report changes Signed-off-by: blam --- packages/backend-common/api-report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 8362c3ab2f..af62238925 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -8,6 +8,7 @@ import { AbortController as AbortController_2 } from 'node-abort-controller'; import { AbortSignal as AbortSignal_2 } from 'node-abort-controller'; +import aws from 'aws-sdk'; import { AwsS3Integration } from '@backstage/integration'; import { AzureIntegration } from '@backstage/integration'; import { BitbucketCloudIntegration } from '@backstage/integration'; @@ -34,7 +35,6 @@ import { Readable } from 'stream'; import { ReadCommitResult } from 'isomorphic-git'; import { RequestHandler } from 'express'; import { Router } from 'express'; -import { S3 } from 'aws-sdk'; import { Server } from 'http'; import * as winston from 'winston'; import { Writable } from 'stream'; @@ -44,7 +44,7 @@ export class AwsS3UrlReader implements UrlReader { constructor( integration: AwsS3Integration, deps: { - s3: S3; + s3: aws.S3; treeResponseFactory: ReadTreeResponseFactory; }, ); From a3ea2f4d4ec0908b7a4f7df381fd322546ad074f Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 19 Apr 2022 02:18:00 +0200 Subject: [PATCH 234/275] chore: updating to latest version with some changes Signed-off-by: blam --- packages/cli/config/jest.js | 2 +- .../src/actions/fetch/cookiecutter.test.ts | 6 +++--- .../src/actions/fetch/rails/railsNewRunner.test.ts | 7 +++---- .../src/actions/fetch/rails/railsNewRunner.ts | 1 - plugins/scaffolder-backend/src/service/router.test.ts | 6 +++--- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index e10f2d1ce1..3c015dd7c7 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -134,7 +134,7 @@ async function getProjectConfig(targetPath, displayName) { '\\.(js|jsx|ts|tsx|mjs|cjs)$': [ '@swc/jest', { - enableSourceMaps: envOptions.enableSourceMaps || envOptions.nextTests, + sourceMaps: false, // envOptions.enableSourceMaps || envOptions.nextTests, }, ], // '^.+\\.(t|j)sx?$': '@swc/jest', diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index 8c501cf8f1..d8c9e06612 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -17,12 +17,12 @@ const executeShellCommand = jest.fn(); const commandExists = jest.fn(); const fetchContents = jest.fn(); -jest.mock('@backstage/plugin-scaffolder-backend', () => ({ - ...jest.requireActual('@backstage/plugin-scaffolder-backend'), +jest.doMock('@backstage/plugin-scaffolder-backend', () => ({ + ...require('@backstage/plugin-scaffolder-backend'), fetchContents, executeShellCommand, })); -jest.mock('command-exists', () => commandExists); +jest.doMock('command-exists', () => commandExists); import { getVoidLogger, diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 0767e63f29..0e0e5891a3 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -17,15 +17,14 @@ const executeShellCommand = jest.fn(); const commandExists = jest.fn(); -jest.mock('@backstage/plugin-scaffolder-backend', () => ({ +jest.doMock('@backstage/plugin-scaffolder-backend', () => ({ executeShellCommand, })); -jest.mock('command-exists', () => commandExists); -jest.mock('fs-extra'); +jest.doMock('command-exists', () => commandExists); import { ContainerRunner } from '@backstage/backend-common'; import fs from 'fs-extra'; - +import mockfs from 'mock-fs'; import path from 'path'; import { PassThrough } from 'stream'; diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts index 0ed02e293c..caebc36779 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts @@ -57,7 +57,6 @@ export class RailsNewRunner { const baseCommand = 'rails'; const baseArguments = ['new']; const commandExistsToRun = await commandExists(baseCommand); - if (commandExistsToRun) { const arrayExtraArguments = railsArgumentResolver( workspacePath, diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 7ddec46078..4079fd0114 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -const mockAccess = jest.fn(); - import { DatabaseManager, getVoidLogger, @@ -43,7 +41,9 @@ import { import { createRouter, DatabaseTaskStore, TaskBroker } from '../index'; import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; -jest.mock('fs-extra', () => ({ +const mockAccess = jest.fn(); + +jest.doMock('fs-extra', () => ({ access: mockAccess, promises: { access: mockAccess, From 1826f15069890980be57c6b788b6da3ceaa40c1a Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 18 May 2022 13:57:46 +0200 Subject: [PATCH 235/275] chore: reworking Signed-off-by: blam Signed-off-by: blam --- packages/cli/package.json | 2 +- .../fetch/rails/railsNewRunner.test.ts | 2 +- .../TechDocsReaderPageContent.test.tsx | 64 +++++-- yarn.lock | 174 ++++++++++-------- 4 files changed, 145 insertions(+), 97 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index a1038ef954..da1ec6f364 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -117,7 +117,7 @@ "run-script-webpack-plugin": "^0.1.0", "semver": "^7.3.2", "style-loader": "^3.3.1", - "swc-loader": "^0.1.15", + "swc-loader": "^0.2.1", "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", "util": "^0.12.3", diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 0e0e5891a3..74640bafd0 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import mockfs from 'mock-fs'; const executeShellCommand = jest.fn(); const commandExists = jest.fn(); @@ -24,7 +25,6 @@ jest.doMock('command-exists', () => commandExists); import { ContainerRunner } from '@backstage/backend-common'; import fs from 'fs-extra'; -import mockfs from 'mock-fs'; import path from 'path'; import { PassThrough } from 'stream'; diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx index def15abf8d..a67eb7eedd 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx @@ -13,6 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +jest.mock('./dom', () => ({ + ...jest.requireActual('./dom'), + useTechDocsReaderDom: jest.fn(), +})); + +jest.mock('../useReaderState', () => ({ + ...jest.requireActual('../useReaderState'), + useReaderState: jest.fn(), +})); + import React from 'react'; import { act, waitFor } from '@testing-library/react'; @@ -25,18 +35,8 @@ import { TechDocsReaderPageProvider, } from '@backstage/plugin-techdocs-react'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; - -const useTechDocsReaderDom = jest.fn(); -jest.mock('./dom', () => ({ - ...jest.requireActual('./dom'), - useTechDocsReaderDom, -})); -const useReaderState = jest.fn(); -jest.mock('../useReaderState', () => ({ - ...jest.requireActual('../useReaderState'), - useReaderState, -})); - +import { useTechDocsReaderDom } from './dom'; +import { useReaderState } from '../useReaderState'; import { TechDocsReaderPageContent } from './TechDocsReaderPageContent'; const mockEntityMetadata = { @@ -92,8 +92,10 @@ describe('', () => { it('should render techdocs page content', async () => { getEntityMetadata.mockResolvedValue(mockEntityMetadata); getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); - useTechDocsReaderDom.mockReturnValue(document.createElement('html')); - useReaderState.mockReturnValue({ state: 'cached' }); + (useTechDocsReaderDom as jest.Mock).mockReturnValue( + document.createElement('html'), + ); + (useReaderState as jest.Mock).mockReturnValue({ state: 'cached' }); await act(async () => { const rendered = await renderInTestApp( @@ -110,10 +112,34 @@ describe('', () => { }); }); + it('should render progress if there is no dom and reader state is checking', async () => { + getEntityMetadata.mockResolvedValue(mockEntityMetadata); + getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); + (useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined); + (useReaderState as jest.Mock).mockReturnValue({ state: 'CHECKING' }); + + await act(async () => { + const rendered = await renderInTestApp( + + + , + ); + + await waitFor(() => { + expect( + rendered.queryByTestId('techdocs-native-shadowroot'), + ).not.toBeInTheDocument(); + expect(rendered.getByRole('progressbar')).toBeInTheDocument(); + }); + }); + }); + it('should not render techdocs content if entity metadata is missing', async () => { getEntityMetadata.mockResolvedValue(undefined); - useTechDocsReaderDom.mockReturnValue(document.createElement('html')); - useReaderState.mockReturnValue({ state: 'cached' }); + (useTechDocsReaderDom as jest.Mock).mockReturnValue( + document.createElement('html'), + ); + (useReaderState as jest.Mock).mockReturnValue({ state: 'cached' }); await act(async () => { const rendered = await renderInTestApp( @@ -136,8 +162,10 @@ describe('', () => { it('should render 404 if there is no dom and reader state is not found', async () => { getEntityMetadata.mockResolvedValue(mockEntityMetadata); getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); - useTechDocsReaderDom.mockReturnValue(undefined); - useReaderState.mockReturnValue({ state: 'CONTENT_NOT_FOUND' }); + (useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined); + (useReaderState as jest.Mock).mockReturnValue({ + state: 'CONTENT_NOT_FOUND', + }); await act(async () => { const rendered = await renderInTestApp( diff --git a/yarn.lock b/yarn.lock index 992d49ca5f..754eee628d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6259,97 +6259,119 @@ "@svgr/plugin-jsx" "^6.3.1" "@svgr/plugin-svgo" "^6.3.1" -"@swc/core-android-arm-eabi@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.160.tgz#f5aaf852e9d104b4ad58d34851bac3bd41a64a60" - integrity sha512-VzFP7tYgvpkUhd8wgyNtERqvoPBBDretyMFxAxPe2SxClaBs9Ka95PdiPPZalRq+vFCb/dFxD8Vhz+XO16Kpjg== +"@swc/core-android-arm-eabi@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.239.tgz#4b9848b9dbeefb9c3de413f668d6c5a2b3f74333" + integrity sha512-v316u9E517XQ48YwtkvfwN3nKw6oirJrBOmniA0IM5qhZYOIHDvm3YEhD+hmlEXWbRJ2iwK3ecN3J/HN725I8g== + dependencies: + "@swc/wasm" "1.2.122" -"@swc/core-android-arm64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.160.tgz#458f7e6aff52958e0764c34500528c18bbb31894" - integrity sha512-m+xqQaa7TqW3Vm9MUvITtdU8OlAc/9yT+TgOS4l8WlfFI87IDnLLfinKKEp+xfKwzYDdIsh+sC+jdGdIBTMB+Q== +"@swc/core-android-arm64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.239.tgz#6f44c684924a62fb22474af49feabd2d33581ead" + integrity sha512-HZRYhiRpTetnABVZIVEVnDDBSu+O/FP8sD1g+/dnYx8RZzbfbAsxvnauTRRuWDaqr3wcjDxGYCHiNf8Chaf2LQ== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-darwin-arm64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.160.tgz#34d48b449de0eae9fddd71b064d36aa5353f22cc" - integrity sha512-9bG70KYKvjNf7tZtjOu1h4kDZPtoidZptIXPGSHuUgJ1BbSJYpfRR5xAmq4k37+GqOjIPJp4+lSGQPa2HfejpA== +"@swc/core-darwin-arm64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.239.tgz#c7339507d9ff62dd89d2e0e9c6c12be964ed6e9d" + integrity sha512-qucvHgJ5VQVZNdQacqbloWDYqZyD1pttBqyRWo3Wqr5mC+JAIJl+JsflFpV8QEgY52aMgk/cLVhTa46Si3L3Jw== -"@swc/core-darwin-x64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.160.tgz#109d92457df928717c73055f01c99ca88815000d" - integrity sha512-+b4HdKAVf/XPZ9DjgG2axGLbquPEuYwEP3zeWgbWn0s0FYQ7WTFxznf3YrTJE9MYadJeCOs3U80E2xVAtRRS9Q== +"@swc/core-darwin-x64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.239.tgz#957d9a6dd4e7ee748c8d76d47e3d91079932b8bf" + integrity sha512-0iunP9diQpjtacY+YQDwWmUANe4nA54aPDcum4O2vnhFeAXWoYX0b7FmYdq7UqxpP5IxcBgQAl7QhEfDnGrvoA== -"@swc/core-freebsd-x64@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.160.tgz#debdccce0129aa856e496f06981cc8e8271fcb41" - integrity sha512-E5agJwv+RVMoZ8FQIPSO5wLPDQx6jqcMpV207EB3pPaxPWGe4n3DH3vcibHp80RACDNdiaqo5lBeBnGJI4ithw== +"@swc/core-freebsd-x64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.239.tgz#cb824b681f6efb9456387083990556ac2e2ca16d" + integrity sha512-CA5yf6hd6czwIHlp/89Y03B+19+3EWCAPESjAPmJFjiNv4aGtzkSH+cYljmKYSkkQlYXGdKAc3d5GwL0sUaQgQ== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-linux-arm-gnueabihf@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.160.tgz#27669f1084c152153c017fc320b6a92cd6b71244" - integrity sha512-uCttZRNx+lWVhCYGC6/pGUej08g1SQc5am6R9NVFh111goytcdlPnC4jV8oWzq2QhDWkkKxLoP2CZOytzI4+0w== +"@swc/core-linux-arm-gnueabihf@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.239.tgz#c88aca1b8bcb36eff80a3f6668c80e3a97c2a806" + integrity sha512-/GsCHvbPcsFF6kYiWyDan8zq1t/Jc5/ksMTWuENmokMBGdTECffFZAtx44V25Iw6Ip6Oe5Uzo7Mdabh4U6sbmA== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-linux-arm64-gnu@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.160.tgz#a8ecadee30639c298e9c2175099d55c1c82f912e" - integrity sha512-sB18roiv8m/zsY6tXLSrbUls0eKkSkxOEF0ennXVEtz97rMJ+WWnkOc8gI+rUpj3MHbVAIxyDNyyZU4cH5g1jQ== +"@swc/core-linux-arm64-gnu@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.239.tgz#3e1d113c57d3b031aff78b140dcf3d5bb0b96ec9" + integrity sha512-VZ/oShno1H+ElO5FuhIacSvSgv5Ftzifkv1iAy9pi8e9cV6Y5RCxIEm6C28nCXNiyrSo5/AqqejGEZKt2pEblA== -"@swc/core-linux-arm64-musl@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.160.tgz#1a2cf738c8a394fcb21fe91f13b1fb9c775cca0b" - integrity sha512-PJ7Ukb+BRR3pGYcUag8qRWOB11eByc5YLx/xAMSc3bRmaYW/oj6s8k+1DYiR//BAuNQdf14MpMFzDuWiDEUh7A== +"@swc/core-linux-arm64-musl@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.239.tgz#f7aacbdd2797a35ec5a0c55a128119735f9a0b8e" + integrity sha512-d24/2NEuvRAVFEFNRwwjlzuZhe442oUnhLuWRqh13bRBY7cRde3KIrxl4IMiVd5GvVKUy4JlhClmiV7Su9nVKw== -"@swc/core-linux-x64-gnu@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.160.tgz#f54c4e0510b69d68f56e681050b717991627ad68" - integrity sha512-wVh8Q86xz3t0y5zoUryWQ64bFG/YxdcykBgaog8lU9xkFb1KSqVRE9ia7aKA12/ZtAfpJZLRBleZxBAcaCg9FQ== +"@swc/core-linux-x64-gnu@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.239.tgz#84d64156ccd513319ff30474c5d5feec1f2d30ef" + integrity sha512-OKjj99kfCSrMEvWbWftSAgj29v5TxII+KCAuA284NoGYVcezzaO37C4TfrDjOW5/wtvDfWk97w8FfsOmrWKl0A== -"@swc/core-linux-x64-musl@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.160.tgz#6f8ec092d8b65a9750faf0a2323b52f39c5bd540" - integrity sha512-AnWdarl9WWuDdbc2AX1w76W1jaekSCokxRrWdSGUgQytaZRtybKZEgThvJCQDrSlYQD4XDOhhVRCurTvy4JsfQ== +"@swc/core-linux-x64-musl@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.239.tgz#d40c6b98eab92aea3920c3b63055f661491c1403" + integrity sha512-BsX/ivpDmYFeqOHz5gA5OqtskO5mkEKyBRhhVnzc9AG9tbhz8X5zZMLPV398RCn48lmS/uS8MPXHkJKAlYA1BA== -"@swc/core-win32-arm64-msvc@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.160.tgz#b4f226ab86e550762b5cc83d0ebe4cf43f1a3624" - integrity sha512-ScL27mZRTwEIqBIv9RY34nQvyBvhosiM5Lus4dCFmS71flPcAEv7hJgy4GE3YUQV0ryGNK9NaO43H8sAyNwKVQ== +"@swc/core-win32-arm64-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.239.tgz#2aa64338bf111109bef89e42f12e57cb2812edea" + integrity sha512-C5es8Aou6+PnZmk+h+Kay/UCctkwCPRonwRajLDa88x2elhmxE1pdLIPAJVp5RpOlFoPRbJAkc5I+4fV5njZ9g== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-win32-ia32-msvc@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.160.tgz#243bb5b15eab76f4c8f004381d63c6d72a8cef68" - integrity sha512-e75zbWlhlyrd5HdrYzELa6OlZxgyaVpJj+c9xMD95HcdklVbmsyt1vuqRxMyqaZUDLyehwwCDRX/ZeDme//M/A== +"@swc/core-win32-ia32-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.239.tgz#842d747ec3c864f4f9217f1b1964cb814ee51dc7" + integrity sha512-24VMplxQTtOJk7cxpBViq9HozSc6Pg6MxBMuudTmGh6z3L//VxLn0wpUR9jLEvRUk/2i1p1DKpc6RQ0tYcNf9A== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-win32-x64-msvc@1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.160.tgz#8708986433e891687bb4a836a683f90bc95e1fce" - integrity sha512-GAYT+WzYQY4sr17S21yJh4flJp/sQ62mAs6RfN89p7jIWgm0Bl/SooRl6ocsftTlnZm7K7QC8zmQVeNCWDCLPw== +"@swc/core-win32-x64-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.239.tgz#e0bbbedfcebf2dcf876cdfb438318407cbe4b288" + integrity sha512-qktIdFdGS6dpDnOGnImrOA9GpNMsVaGAycGcvoqoUYEkPf8dFCLKthEOzqA1fU01wKn3r1M5mi1eluM1ld5Hng== "@swc/core@^1.2.160": - version "1.2.160" - resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.160.tgz#d91730a5021d4c8aef87855dde11fc8931496176" - integrity sha512-nXoC7HA+aY7AtBPsiqGXocoRLAzzA7MV+InWQtILN7Uru4hB9+rLnLCPc3zSdg7pgnxJLa1tHup1Rz7Vv6TcIQ== + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.239.tgz#4a28f9962f5e7ae1094368243c52168d36258eef" + integrity sha512-U3tbnOBykfLGIJRQ+bSxVsgyTPQ5l9zTe2YQq3GULnxe6rfsgEYN54Uelp9vr3w7LXfW0k+bteXS6YGLpmnEfw== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.160" - "@swc/core-android-arm64" "1.2.160" - "@swc/core-darwin-arm64" "1.2.160" - "@swc/core-darwin-x64" "1.2.160" - "@swc/core-freebsd-x64" "1.2.160" - "@swc/core-linux-arm-gnueabihf" "1.2.160" - "@swc/core-linux-arm64-gnu" "1.2.160" - "@swc/core-linux-arm64-musl" "1.2.160" - "@swc/core-linux-x64-gnu" "1.2.160" - "@swc/core-linux-x64-musl" "1.2.160" - "@swc/core-win32-arm64-msvc" "1.2.160" - "@swc/core-win32-ia32-msvc" "1.2.160" - "@swc/core-win32-x64-msvc" "1.2.160" + "@swc/core-android-arm-eabi" "1.2.239" + "@swc/core-android-arm64" "1.2.239" + "@swc/core-darwin-arm64" "1.2.239" + "@swc/core-darwin-x64" "1.2.239" + "@swc/core-freebsd-x64" "1.2.239" + "@swc/core-linux-arm-gnueabihf" "1.2.239" + "@swc/core-linux-arm64-gnu" "1.2.239" + "@swc/core-linux-arm64-musl" "1.2.239" + "@swc/core-linux-x64-gnu" "1.2.239" + "@swc/core-linux-x64-musl" "1.2.239" + "@swc/core-win32-arm64-msvc" "1.2.239" + "@swc/core-win32-ia32-msvc" "1.2.239" + "@swc/core-win32-x64-msvc" "1.2.239" "@swc/jest@^0.2.20": - version "0.2.20" - resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.20.tgz#2bddb4348fb730296b86cdcd96748be131b11395" - integrity sha512-5qSUBYY1wyIMn7p0Vl9qqV4hMI69oJwZCIPUpBsTFWN2wlwn6RDugzdgCn+bLXVYh+Cxi8bJcZ1uumDgsoL+FA== + version "0.2.22" + resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" + integrity sha512-PIUIk9IdB1oAVfF9zNIfYoMBoEhahrrSvyryFANas7swC1cF0L5HR0f9X4qfet46oyCHCBtNcSpN0XJEOFIKlw== dependencies: "@jest/create-cache-key-function" "^27.4.2" +"@swc/wasm@1.2.122": + version "1.2.122" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.122.tgz#87a5e654b26a71b2e84b801f41e45f823b856639" + integrity sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ== + +"@swc/wasm@1.2.130": + version "1.2.130" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" + integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== + "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -24763,12 +24785,10 @@ swap-case@^2.0.2: dependencies: tslib "^2.0.3" -swc-loader@^0.1.15: - version "0.1.15" - resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.1.15.tgz#cb9c630ccfbb46dabc5aebc5560cced658e32992" - integrity sha512-cn1WPIeQJvXM4bbo3OwdEIapsQ4uUGOfyFj0h2+2+brT0k76DCGnZXDE2KmcqTd2JSQ+b61z2NPMib7eEwMYYw== - dependencies: - loader-utils "^2.0.0" +swc-loader@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.1.tgz#43f2d1a746cf985476ca75ecac6234c7314fd9f8" + integrity sha512-opJG9R5Dl+Fa0QihOZO9v6vueB+JzRhJZw+c4ZRCqUHG2RZL10eHZRHMdQoDz6bvLp7XWe7XBIMUkuWtoGfMJw== swr@^1.1.2: version "1.3.0" From 658d6ab0e7c1c1b0a84f5c6f1cd214e9e6f03f59 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 3 Jun 2022 16:09:57 +0200 Subject: [PATCH 236/275] chore: fixing all tests Signed-off-by: blam --- .../src/actions/fetch/cookiecutter.test.ts | 22 ++++++++++++------- .../fetch/rails/railsNewRunner.test.ts | 18 +++++++++------ .../TechDocsReaderPageContent.test.tsx | 22 ------------------- 3 files changed, 25 insertions(+), 37 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index d8c9e06612..6ba83fdf77 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -13,16 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -const executeShellCommand = jest.fn(); -const commandExists = jest.fn(); -const fetchContents = jest.fn(); -jest.doMock('@backstage/plugin-scaffolder-backend', () => ({ - ...require('@backstage/plugin-scaffolder-backend'), - fetchContents, - executeShellCommand, +jest.mock('@backstage/plugin-scaffolder-backend', () => ({ + ...jest.requireActual('@backstage/plugin-scaffolder-backend'), + fetchContents: jest.fn(), + executeShellCommand: jest.fn(), })); -jest.doMock('command-exists', () => commandExists); +jest.mock('command-exists', () => jest.fn()); import { getVoidLogger, @@ -37,9 +34,18 @@ import os from 'os'; import { PassThrough } from 'stream'; import { createFetchCookiecutterAction } from './cookiecutter'; import { join } from 'path'; +import { + fetchContents as fetchContentsMock, + executeShellCommand as executeShellCommandMock, +} from '@backstage/plugin-scaffolder-backend'; import type { ActionContext } from '@backstage/plugin-scaffolder-backend'; +import commandExistsMock from 'command-exists'; describe('fetch:cookiecutter', () => { + const fetchContents = fetchContentsMock as jest.Mock; + const executeShellCommand = executeShellCommandMock as jest.Mock; + const commandExists = commandExistsMock as unknown as jest.Mock; + const integrations = ScmIntegrations.fromConfig( new ConfigReader({ integrations: { diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 74640bafd0..7a3f3be722 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -13,24 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import mockfs from 'mock-fs'; -const executeShellCommand = jest.fn(); -const commandExists = jest.fn(); - -jest.doMock('@backstage/plugin-scaffolder-backend', () => ({ - executeShellCommand, +jest.mock('@backstage/plugin-scaffolder-backend', () => ({ + executeShellCommand: jest.fn(), })); -jest.doMock('command-exists', () => commandExists); +jest.mock('command-exists', () => jest.fn()); +jest.mock('fs-extra'); import { ContainerRunner } from '@backstage/backend-common'; import fs from 'fs-extra'; + import path from 'path'; import { PassThrough } from 'stream'; import { RailsNewRunner } from './railsNewRunner'; +import { executeShellCommand as executeShellCommandMock } from '@backstage/plugin-scaffolder-backend'; +import commandExistsMock from 'command-exists'; + describe('Rails Templater', () => { + const executeShellCommand = executeShellCommandMock as jest.Mock; + const commandExists = commandExistsMock as unknown as jest.Mock; + const containerRunner: jest.Mocked = { runContainer: jest.fn(), }; diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx index a67eb7eedd..4b169d9b7d 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx @@ -112,28 +112,6 @@ describe('', () => { }); }); - it('should render progress if there is no dom and reader state is checking', async () => { - getEntityMetadata.mockResolvedValue(mockEntityMetadata); - getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); - (useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined); - (useReaderState as jest.Mock).mockReturnValue({ state: 'CHECKING' }); - - await act(async () => { - const rendered = await renderInTestApp( - - - , - ); - - await waitFor(() => { - expect( - rendered.queryByTestId('techdocs-native-shadowroot'), - ).not.toBeInTheDocument(); - expect(rendered.getByRole('progressbar')).toBeInTheDocument(); - }); - }); - }); - it('should not render techdocs content if entity metadata is missing', async () => { getEntityMetadata.mockResolvedValue(undefined); (useTechDocsReaderDom as jest.Mock).mockReturnValue( From 24f4f469c79152cfde9cb4f91297b12cdec95b45 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 8 Jun 2022 17:18:51 +0200 Subject: [PATCH 237/275] chore: bump yarn lock Signed-off-by: blam --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 754eee628d..0969a739c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24786,9 +24786,9 @@ swap-case@^2.0.2: tslib "^2.0.3" swc-loader@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.1.tgz#43f2d1a746cf985476ca75ecac6234c7314fd9f8" - integrity sha512-opJG9R5Dl+Fa0QihOZO9v6vueB+JzRhJZw+c4ZRCqUHG2RZL10eHZRHMdQoDz6bvLp7XWe7XBIMUkuWtoGfMJw== + version "0.2.2" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.2.tgz#3e2f4efc91bd4a3928fb22cbdcfdd8135b5aec78" + integrity sha512-haRGcIwvRj8BLv7Un2qT/fMHNYN0DKJJPZV9gi39//vgglvpiFsXTM9jxLmpeNl3lhZ8G5/lGXkKfbvfE0VCsQ== swr@^1.1.2: version "1.3.0" From 79c04d2af31bc47738232541c8ea8b205f2a0dac Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 8 Jun 2022 17:58:44 +0200 Subject: [PATCH 238/275] try to fix? Signed-off-by: blam Signed-off-by: blam --- packages/cli/package.json | 3 ++- yarn.lock | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index da1ec6f364..d62b7b023b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -67,6 +67,7 @@ "chalk": "^4.0.0", "chokidar": "^3.3.1", "commander": "^9.1.0", + "core-js": "^3.22.8", "css-loader": "^6.5.1", "diff": "^5.0.0", "esbuild": "^0.14.10", @@ -91,8 +92,8 @@ "html-webpack-plugin": "^5.3.1", "inquirer": "^8.2.0", "jest": "^27.5.1", - "jest-runtime": "^27.5.1", "jest-css-modules": "^2.1.0", + "jest-runtime": "^27.5.1", "jest-transform-yaml": "^1.0.0", "json-schema": "^0.4.0", "lodash": "^4.17.21", diff --git a/yarn.lock b/yarn.lock index 0969a739c2..449889e78a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11017,10 +11017,10 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.4.1, core-js@^3.6.5: - version "3.24.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f" - integrity sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg== +core-js@^3.22.8, core-js@^3.4.1, core-js@^3.6.5: + version "3.22.8" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz#23f860b1fe60797cc4f704d76c93fea8a2f60631" + integrity sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" From 7b647470091470e55040f87f6565be4c353ea8c4 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 9 Jun 2022 11:44:04 +0200 Subject: [PATCH 239/275] remove the env Signed-off-by: blam Signed-off-by: blam --- packages/cli/package.json | 1 - packages/cli/src/lib/bundler/transforms.ts | 2 -- yarn.lock | 2 +- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index d62b7b023b..f70eacf768 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -67,7 +67,6 @@ "chalk": "^4.0.0", "chokidar": "^3.3.1", "commander": "^9.1.0", - "core-js": "^3.22.8", "css-loader": "^6.5.1", "diff": "^5.0.0", "esbuild": "^0.14.10", diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index cb151e67c3..9c3efd77a5 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -57,7 +57,6 @@ export const transforms = (options: TransformOptions): Transforms => { { loader: 'swc-loader', options: { - env: { mode: 'usage' }, jsc: { parser: { syntax: 'typescript', @@ -82,7 +81,6 @@ export const transforms = (options: TransformOptions): Transforms => { { loader: 'swc-loader', options: { - env: { mode: 'usage' }, jsc: { parser: { syntax: 'ecmascript', diff --git a/yarn.lock b/yarn.lock index 449889e78a..6f875d7821 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11017,7 +11017,7 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.22.8, core-js@^3.4.1, core-js@^3.6.5: +core-js@^3.4.1, core-js@^3.6.5: version "3.22.8" resolved "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz#23f860b1fe60797cc4f704d76c93fea8a2f60631" integrity sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA== From 7150be3b7de0891c0d75b96cfa78ad9a466d90a0 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 9 Jun 2022 12:43:51 +0200 Subject: [PATCH 240/275] chore: reset some accidental changes Signed-off-by: blam --- app-config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index d69fa5cf79..32b53da236 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -181,8 +181,7 @@ integrations: # rawBaseUrl: https://ghe.example.net/raw # token: ${GHE_TOKEN} gitlab: - - host: lols.lols.com - apiBaseUrl: https://lols.lols.com/api + - host: gitlab.com token: ${GITLAB_TOKEN} ### Example for how to add a bitbucket cloud integration # bitbucketCloud: From 684f9b415194ef1bf6217e29b4d6ba25355c6238 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 9 Jun 2022 12:58:54 +0200 Subject: [PATCH 241/275] chore: removing the sucrase tranforms and tidy up the transforming Signed-off-by: blam Signed-off-by: blam --- packages/cli/config/jest.js | 3 +- packages/cli/config/jestSucraseTransform.js | 91 --------------------- 2 files changed, 1 insertion(+), 93 deletions(-) delete mode 100644 packages/cli/config/jestSucraseTransform.js diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 3c015dd7c7..33c89029f3 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -134,10 +134,9 @@ async function getProjectConfig(targetPath, displayName) { '\\.(js|jsx|ts|tsx|mjs|cjs)$': [ '@swc/jest', { - sourceMaps: false, // envOptions.enableSourceMaps || envOptions.nextTests, + sourceMaps: envOptions.enableSourceMaps || envOptions.nextTests, }, ], - // '^.+\\.(t|j)sx?$': '@swc/jest', '\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$': require.resolve('./jestFileTransform.js'), '\\.(yaml)$': require.resolve('jest-transform-yaml'), diff --git a/packages/cli/config/jestSucraseTransform.js b/packages/cli/config/jestSucraseTransform.js deleted file mode 100644 index d0400f4f3b..0000000000 --- a/packages/cli/config/jestSucraseTransform.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const { createHash } = require('crypto'); -const { transform } = require('sucrase'); -const sucrasePkg = require('sucrase/package.json'); -const sucrasePluginPkg = require('@sucrase/jest-plugin/package.json'); - -const ESM_REGEX = /\b(?:import|export)\b/; - -function createTransformer(config) { - const process = (source, filePath) => { - let transforms; - - if (filePath.endsWith('.esm.js')) { - transforms = ['imports']; - } else if (filePath.endsWith('.js')) { - // This is a very rough filter to avoid transforming things that we quickly - // can be sure are definitely not ESM modules. - if (ESM_REGEX.test(source)) { - transforms = ['imports', 'jsx']; // JSX within .js is currently allowed - } - } else if (filePath.endsWith('.jsx')) { - transforms = ['jsx', 'imports']; - } else if (filePath.endsWith('.ts')) { - transforms = ['typescript', 'imports']; - } else if (filePath.endsWith('.tsx')) { - transforms = ['typescript', 'jsx', 'imports']; - } - - // Only apply the jest transform to the test files themselves - if (transforms && filePath.includes('.test.')) { - transforms.push('jest'); - } - - if (transforms) { - const { code, sourceMap: map } = transform(source, { - transforms, - filePath, - disableESTransforms: true, - sourceMapOptions: { - compiledFilename: filePath, - }, - }); - if (config.enableSourceMaps) { - const b64 = Buffer.from(JSON.stringify(map), 'utf8').toString('base64'); - const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${b64}`; - // Include both inline and object source maps, as inline source maps are - // needed for support of some editor integrations. - return { code: `${code}\n${suffix}`, map }; - } - // We only return the `map` result if source maps are enabled, as they - // have a negative impact on the coverage accuracy. - return code; - } - - return source; - }; - - // TODO: contribute something like this to @sucrase/jest-plugin - const getCacheKey = sourceText => { - return createHash('md5') - .update(sourceText) - .update(Buffer.alloc(1)) - .update(sucrasePkg.version) - .update(Buffer.alloc(1)) - .update(sucrasePluginPkg.version) - .update(Buffer.alloc(1)) - .update(JSON.stringify(config)) - .update(Buffer.alloc(1)) - .update('1') // increment whenever the transform logic in this file changes - .digest('hex'); - }; - - return { process, getCacheKey }; -} - -module.exports = { createTransformer }; From 1f7dbd35e816069f657dba0849df33c5230870ae Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 10 Jun 2022 15:46:50 +0200 Subject: [PATCH 242/275] chore: only transform things that smell like esm Signed-off-by: blam --- packages/cli/config/jest.js | 2 +- packages/cli/config/jestSwcTransform.js | 35 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 packages/cli/config/jestSwcTransform.js diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 33c89029f3..028cc8d389 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -132,7 +132,7 @@ async function getProjectConfig(targetPath, displayName) { transform: { '\\.(js|jsx|ts|tsx|mjs|cjs)$': [ - '@swc/jest', + require.resolve('./jestSwcTransform'), { sourceMaps: envOptions.enableSourceMaps || envOptions.nextTests, }, diff --git a/packages/cli/config/jestSwcTransform.js b/packages/cli/config/jestSwcTransform.js new file mode 100644 index 0000000000..c87948978d --- /dev/null +++ b/packages/cli/config/jestSwcTransform.js @@ -0,0 +1,35 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const { createTransformer: createSwcTransformer } = require('@swc/jest'); + +const ESM_REGEX = /\b(?:import|export)\b/; + +function createTransformer(config) { + const swcTransformer = createSwcTransformer(config); + const process = (source, filePath, jestOptions) => { + if (filePath.endsWith('.js') && !ESM_REGEX.test(source)) { + return source; + } + + return swcTransformer.process(source, filePath, jestOptions); + }; + + const getCacheKey = swcTransformer.getCacheKey; + + return { process, getCacheKey }; +} + +module.exports = { createTransformer }; From 9a05f6fc26850e1e049ab537a6e4a10a0da4f480 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 10 Jun 2022 15:48:26 +0200 Subject: [PATCH 243/275] chore: remove the old esm transform too Signed-off-by: blam --- packages/cli/config/jestEsmTransform.js | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 packages/cli/config/jestEsmTransform.js diff --git a/packages/cli/config/jestEsmTransform.js b/packages/cli/config/jestEsmTransform.js deleted file mode 100644 index c1eec7d9f8..0000000000 --- a/packages/cli/config/jestEsmTransform.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -throw new Error( - 'The ./jestEsmTransform.js transform has been removed, switch to using ./jestSucraseTransform.js instead', -); From 6ae0f6a71902f741782239906729f78c4eeb7c5d Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 13 Jun 2022 15:09:17 +0200 Subject: [PATCH 244/275] chore: remove some other parts too Signed-off-by: blam --- .changeset/nervous-rivers-sneeze.md | 6 ++++++ packages/cli/package.json | 2 -- packages/cli/src/lib/bundler/config.ts | 16 ---------------- yarn.lock | 19 ------------------- 4 files changed, 6 insertions(+), 37 deletions(-) create mode 100644 .changeset/nervous-rivers-sneeze.md diff --git a/.changeset/nervous-rivers-sneeze.md b/.changeset/nervous-rivers-sneeze.md new file mode 100644 index 0000000000..f3a5550ead --- /dev/null +++ b/.changeset/nervous-rivers-sneeze.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-common': patch +'@backstage/cli': patch +--- + +Switch out `sucrase` for `swc` for transpilation diff --git a/packages/cli/package.json b/packages/cli/package.json index f70eacf768..28e72fe02f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -37,8 +37,6 @@ "@backstage/errors": "^1.1.0", "@backstage/release-manifests": "^0.0.5", "@backstage/types": "^1.0.0", - "@hot-loader/react-dom-v16": "npm:@hot-loader/react-dom@^16.0.2", - "@hot-loader/react-dom-v17": "npm:@hot-loader/react-dom@^17.0.2", "@manypkg/get-packages": "^1.1.3", "@octokit/request": "^6.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index 0a8f8e988b..f98d72b02b 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -135,21 +135,6 @@ export async function createConfig( }), ); - // Detect and use the appropriate react-dom hot-loader patch based on what - // version of React is used within the target repo. - const resolveAliases: Record = {}; - try { - // eslint-disable-next-line import/no-extraneous-dependencies - const { version: reactDomVersion } = require('react-dom/package.json'); - if (reactDomVersion.startsWith('16.')) { - resolveAliases['react-dom'] = '@hot-loader/react-dom-v16'; - } else { - resolveAliases['react-dom'] = '@hot-loader/react-dom-v17'; - } - } catch (error) { - console.warn(`WARNING: Failed to read react-dom version, ${error}`); - } - const resolvePlugins: webpack.ResolvePluginInstance[] = [ new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), ]; @@ -194,7 +179,6 @@ export async function createConfig( util: require.resolve('util/'), }, plugins: resolvePlugins, - alias: resolveAliases, }, module: { rules: loaders, diff --git a/yarn.lock b/yarn.lock index 6f875d7821..3e6f9d0dae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3221,25 +3221,6 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@hot-loader/react-dom-v16@npm:@hot-loader/react-dom@^16.0.2": - version "16.14.0" - resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.14.0.tgz#3cfc64e40bb78fa623e59b582b8f09dcdaad648a" - integrity sha512-EN9czvcLsMYmSDo5yRKZOAq3ZGRlDpad1gPtX0NdMMomJXcPE3yFSeFzE94X/NjOaiSVimB7LuqPYpkWVaIi4Q== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -"@hot-loader/react-dom-v17@npm:@hot-loader/react-dom@^17.0.2": - version "17.0.2" - resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-17.0.2.tgz#0b24e484093e8f97eb5c72bebdda44fc20bc8400" - integrity sha512-G2RZrFhsQClS+bdDh/Ojpk3SgocLPUGnvnJDTQYnmKSSwXtU+Yh+8QMs+Ia3zaAvBiOSpIIDSUxuN69cvKqrWg== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - "@humanwhocodes/config-array@^0.10.4": version "0.10.4" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" From 30a701d4f52a3ecd5c45cc5d2ab4342337049b9a Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 14 Jun 2022 10:24:47 +0200 Subject: [PATCH 245/275] chore: use swc as the transpiler in storybook instead of sucrase Signed-off-by: blam --- storybook/.storybook/main.js | 32 ++- storybook/package.json | 4 +- storybook/yarn.lock | 430 ++++++++++++++++------------------- 3 files changed, 222 insertions(+), 244 deletions(-) diff --git a/storybook/.storybook/main.js b/storybook/.storybook/main.js index ad5fbb5bd6..95d4c80035 100644 --- a/storybook/.storybook/main.js +++ b/storybook/.storybook/main.js @@ -52,7 +52,7 @@ module.exports = Object.assign(({ args }) => { // Mirror config in packages/cli/src/lib/bundler config.resolve.mainFields = ['browser', 'module', 'main']; - // Remove the default babel-loader for js files, we're using sucrase instead + // Remove the default babel-loader for js files, we're using swc instead const [jsLoader] = config.module.rules.splice(0, 1); if (!jsLoader.use[0].loader.includes('babel-loader')) { throw new Error( @@ -66,17 +66,39 @@ module.exports = Object.assign(({ args }) => { { test: /\.(tsx?)$/, exclude: /node_modules/, - loader: require.resolve('@sucrase/webpack-loader'), + loader: require.resolve('swc-loader'), options: { - transforms: ['typescript', 'jsx', 'react-hot-loader'], + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + dynamicImport: true, + }, + transform: { + react: { + runtime: 'automatic', + }, + }, + }, }, }, { test: /\.(jsx?|mjs|cjs)$/, exclude: /node_modules/, - loader: require.resolve('@sucrase/webpack-loader'), + loader: require.resolve('swc-loader'), options: { - transforms: ['jsx', 'react-hot-loader'], + jsc: { + parser: { + syntax: 'ecmascript', + jsx: true, + dynamicImport: true, + }, + transform: { + react: { + runtime: 'automatic', + }, + }, + }, }, }, ); diff --git a/storybook/package.json b/storybook/package.json index bb3f000322..fabbc0edde 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -8,11 +8,11 @@ "build-storybook": "build-storybook --output-dir dist" }, "dependencies": { - "@sucrase/webpack-loader": "^2.0.0", + "swc-loader": "^0.2.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-hot-loader": "^4.13.0", - "sucrase": "^3.21.0" + "@swc/core": "^1.2.186" }, "devDependencies": { "@storybook/addon-a11y": "^6.5.9", diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 364b87607b..05d0a95472 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -66,9 +66,9 @@ semver "^6.3.0" "@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" - integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== + version "7.18.12" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" + integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== dependencies: "@babel/types" "^7.18.10" "@jridgewell/gen-mapping" "^0.3.2" @@ -276,13 +276,13 @@ integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@^7.18.9": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz#a7fcd3ab9b1be4c9b52cf7d7fdc1e88c2ce93396" - integrity sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ== + version "7.18.11" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" + integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== dependencies: "@babel/helper-function-name" "^7.18.9" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" + "@babel/traverse" "^7.18.11" "@babel/types" "^7.18.10" "@babel/helpers@^7.12.5", "@babel/helpers@^7.18.9": @@ -303,10 +303,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" - integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== +"@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.11": + version "7.18.11" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" + integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -907,9 +907,9 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.18.6": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz#b23401b32f1f079396bcaed01667a54ebe4f9f85" - integrity sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ== + version "7.18.12" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz#712e9a71b9e00fde9f8c0238e0cceee86ab2f8fd" + integrity sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" @@ -1079,10 +1079,10 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.18.10", "@babel/traverse@^7.18.9": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" - integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.18.10", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.9": + version "7.18.11" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" + integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.18.10" @@ -1090,7 +1090,7 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.10" + "@babel/parser" "^7.18.11" "@babel/types" "^7.18.10" debug "^4.1.0" globals "^11.1.0" @@ -1174,10 +1174,10 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.14" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" - integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.15" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1396,23 +1396,6 @@ global "^4.4.0" regenerator-runtime "^0.13.7" -"@storybook/addons@6.5.9": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.9.tgz#5a9d7395c579a9cbc44dfc122362fb3c95dfb9d5" - integrity sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ== - dependencies: - "@storybook/api" "6.5.9" - "@storybook/channels" "6.5.9" - "@storybook/client-logger" "6.5.9" - "@storybook/core-events" "6.5.9" - "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/router" "6.5.9" - "@storybook/theming" "6.5.9" - "@types/webpack-env" "^1.16.0" - core-js "^3.8.2" - global "^4.4.0" - regenerator-runtime "^0.13.7" - "@storybook/api@6.5.10": version "6.5.10" resolved "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz#215623844648f0da2ac646fdcdd1345c2e1a8490" @@ -1436,29 +1419,6 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/api@6.5.9": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/api/-/api-6.5.9.tgz#303733214c9de0422d162f7c54ae05d088b89bf9" - integrity sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA== - dependencies: - "@storybook/channels" "6.5.9" - "@storybook/client-logger" "6.5.9" - "@storybook/core-events" "6.5.9" - "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/router" "6.5.9" - "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.5.9" - core-js "^3.8.2" - fast-deep-equal "^3.1.3" - global "^4.4.0" - lodash "^4.17.21" - memoizerific "^1.11.3" - regenerator-runtime "^0.13.7" - store2 "^2.12.0" - telejson "^6.0.8" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - "@storybook/builder-webpack4@6.5.10": version "6.5.10" resolved "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.10.tgz#79e95323577a37349ab3c81193fa249ac5c50173" @@ -1589,15 +1549,6 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/channels@6.5.9": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz#abfab89a6587a2688e9926d4aafeb11c9d8b2e79" - integrity sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g== - dependencies: - core-js "^3.8.2" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - "@storybook/client-api@6.5.10": version "6.5.10" resolved "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz#0bc3f68ce014ce1ffd560472a893ba04be370f09" @@ -1624,7 +1575,7 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-logger@6.5.10": +"@storybook/client-logger@6.5.10", "@storybook/client-logger@^6.4.0": version "6.5.10" resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz#cfea823a5b8444409daa74f854c5d05367986b34" integrity sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w== @@ -1632,14 +1583,6 @@ core-js "^3.8.2" global "^4.4.0" -"@storybook/client-logger@6.5.9", "@storybook/client-logger@^6.4.0": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.9.tgz#dc1669abe8c45af1cc38f74c6f4b15ff33e63014" - integrity sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg== - dependencies: - core-js "^3.8.2" - global "^4.4.0" - "@storybook/components@6.5.10": version "6.5.10" resolved "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz#268e1269bc3d262f7dcec13f96c3b844919687b8" @@ -1743,13 +1686,6 @@ dependencies: core-js "^3.8.2" -"@storybook/core-events@6.5.9": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.9.tgz#5b0783c7d22a586c0f5e927a61fe1b1223e19637" - integrity sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q== - dependencies: - core-js "^3.8.2" - "@storybook/core-server@6.5.10": version "6.5.10" resolved "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.10.tgz#ada3d647833c02cb8c742281c1f314ff866f96f8" @@ -1850,13 +1786,13 @@ regenerator-runtime "^0.13.7" "@storybook/instrumenter@^6.4.0": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.9.tgz#885d9dec31b7b7fa6ea29b446105480450e527b8" - integrity sha512-I2nu/6H0MAy8d+d3LY/G6oYEFyWlc8f2Qs2DhpYh5FiCgIpzvY0DMN05Lf8oaXdKHL3lPF/YLJH17FttekXs1w== + version "6.5.10" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.10.tgz#5443f5fdb25ddb589ede2e2f0147becaffd405cb" + integrity sha512-3yKJW68wTnGYEts2mJQG6M7ZE+fe54fuy5lBBzRtvWnC15uWTxuaiFp2kxH5b+stSCi4m71ws45RNiEafdBgEQ== dependencies: - "@storybook/addons" "6.5.9" - "@storybook/client-logger" "6.5.9" - "@storybook/core-events" "6.5.9" + "@storybook/addons" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" core-js "^3.8.2" global "^4.4.0" @@ -2054,17 +1990,6 @@ qs "^6.10.0" regenerator-runtime "^0.13.7" -"@storybook/router@6.5.9": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz#4740248f8517425b2056273fb366ace8a17c65e8" - integrity sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg== - dependencies: - "@storybook/client-logger" "6.5.9" - core-js "^3.8.2" - memoizerific "^1.11.3" - qs "^6.10.0" - regenerator-runtime "^0.13.7" - "@storybook/semver@^7.3.2": version "7.3.2" resolved "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" @@ -2149,16 +2074,6 @@ memoizerific "^1.11.3" regenerator-runtime "^0.13.7" -"@storybook/theming@6.5.9": - version "6.5.9" - resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz#13f60a3a3cd73ceb5caf9f188e1627e79f1891aa" - integrity sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw== - dependencies: - "@storybook/client-logger" "6.5.9" - core-js "^3.8.2" - memoizerific "^1.11.3" - regenerator-runtime "^0.13.7" - "@storybook/ui@6.5.10": version "6.5.10" resolved "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.10.tgz#f56095a1a39ae5a203f2ac7f3dba86341a5927d5" @@ -2179,17 +2094,116 @@ regenerator-runtime "^0.13.7" resolve-from "^5.0.0" -"@sucrase/webpack-loader@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sucrase/webpack-loader/-/webpack-loader-2.0.0.tgz#b8a70b8d3df3eeb570e6a3315e1a9c6b723e4a37" - integrity sha512-KUfWr83g70Qm+ZqjGL+M4tX01taDP3BldQcI6NSMlDf7WTDfuo0RvLlS0ekF6dPVslNyZhbFFBy2OBTB6Sa6+Q== +"@swc/core-android-arm-eabi@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.239.tgz#4b9848b9dbeefb9c3de413f668d6c5a2b3f74333" + integrity sha512-v316u9E517XQ48YwtkvfwN3nKw6oirJrBOmniA0IM5qhZYOIHDvm3YEhD+hmlEXWbRJ2iwK3ecN3J/HN725I8g== dependencies: - loader-utils "^1.1.0" + "@swc/wasm" "1.2.122" + +"@swc/core-android-arm64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.239.tgz#6f44c684924a62fb22474af49feabd2d33581ead" + integrity sha512-HZRYhiRpTetnABVZIVEVnDDBSu+O/FP8sD1g+/dnYx8RZzbfbAsxvnauTRRuWDaqr3wcjDxGYCHiNf8Chaf2LQ== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-darwin-arm64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.239.tgz#c7339507d9ff62dd89d2e0e9c6c12be964ed6e9d" + integrity sha512-qucvHgJ5VQVZNdQacqbloWDYqZyD1pttBqyRWo3Wqr5mC+JAIJl+JsflFpV8QEgY52aMgk/cLVhTa46Si3L3Jw== + +"@swc/core-darwin-x64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.239.tgz#957d9a6dd4e7ee748c8d76d47e3d91079932b8bf" + integrity sha512-0iunP9diQpjtacY+YQDwWmUANe4nA54aPDcum4O2vnhFeAXWoYX0b7FmYdq7UqxpP5IxcBgQAl7QhEfDnGrvoA== + +"@swc/core-freebsd-x64@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.239.tgz#cb824b681f6efb9456387083990556ac2e2ca16d" + integrity sha512-CA5yf6hd6czwIHlp/89Y03B+19+3EWCAPESjAPmJFjiNv4aGtzkSH+cYljmKYSkkQlYXGdKAc3d5GwL0sUaQgQ== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-linux-arm-gnueabihf@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.239.tgz#c88aca1b8bcb36eff80a3f6668c80e3a97c2a806" + integrity sha512-/GsCHvbPcsFF6kYiWyDan8zq1t/Jc5/ksMTWuENmokMBGdTECffFZAtx44V25Iw6Ip6Oe5Uzo7Mdabh4U6sbmA== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-linux-arm64-gnu@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.239.tgz#3e1d113c57d3b031aff78b140dcf3d5bb0b96ec9" + integrity sha512-VZ/oShno1H+ElO5FuhIacSvSgv5Ftzifkv1iAy9pi8e9cV6Y5RCxIEm6C28nCXNiyrSo5/AqqejGEZKt2pEblA== + +"@swc/core-linux-arm64-musl@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.239.tgz#f7aacbdd2797a35ec5a0c55a128119735f9a0b8e" + integrity sha512-d24/2NEuvRAVFEFNRwwjlzuZhe442oUnhLuWRqh13bRBY7cRde3KIrxl4IMiVd5GvVKUy4JlhClmiV7Su9nVKw== + +"@swc/core-linux-x64-gnu@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.239.tgz#84d64156ccd513319ff30474c5d5feec1f2d30ef" + integrity sha512-OKjj99kfCSrMEvWbWftSAgj29v5TxII+KCAuA284NoGYVcezzaO37C4TfrDjOW5/wtvDfWk97w8FfsOmrWKl0A== + +"@swc/core-linux-x64-musl@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.239.tgz#d40c6b98eab92aea3920c3b63055f661491c1403" + integrity sha512-BsX/ivpDmYFeqOHz5gA5OqtskO5mkEKyBRhhVnzc9AG9tbhz8X5zZMLPV398RCn48lmS/uS8MPXHkJKAlYA1BA== + +"@swc/core-win32-arm64-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.239.tgz#2aa64338bf111109bef89e42f12e57cb2812edea" + integrity sha512-C5es8Aou6+PnZmk+h+Kay/UCctkwCPRonwRajLDa88x2elhmxE1pdLIPAJVp5RpOlFoPRbJAkc5I+4fV5njZ9g== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-win32-ia32-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.239.tgz#842d747ec3c864f4f9217f1b1964cb814ee51dc7" + integrity sha512-24VMplxQTtOJk7cxpBViq9HozSc6Pg6MxBMuudTmGh6z3L//VxLn0wpUR9jLEvRUk/2i1p1DKpc6RQ0tYcNf9A== + dependencies: + "@swc/wasm" "1.2.130" + +"@swc/core-win32-x64-msvc@1.2.239": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.239.tgz#e0bbbedfcebf2dcf876cdfb438318407cbe4b288" + integrity sha512-qktIdFdGS6dpDnOGnImrOA9GpNMsVaGAycGcvoqoUYEkPf8dFCLKthEOzqA1fU01wKn3r1M5mi1eluM1ld5Hng== + +"@swc/core@^1.2.186": + version "1.2.239" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.239.tgz#4a28f9962f5e7ae1094368243c52168d36258eef" + integrity sha512-U3tbnOBykfLGIJRQ+bSxVsgyTPQ5l9zTe2YQq3GULnxe6rfsgEYN54Uelp9vr3w7LXfW0k+bteXS6YGLpmnEfw== + optionalDependencies: + "@swc/core-android-arm-eabi" "1.2.239" + "@swc/core-android-arm64" "1.2.239" + "@swc/core-darwin-arm64" "1.2.239" + "@swc/core-darwin-x64" "1.2.239" + "@swc/core-freebsd-x64" "1.2.239" + "@swc/core-linux-arm-gnueabihf" "1.2.239" + "@swc/core-linux-arm64-gnu" "1.2.239" + "@swc/core-linux-arm64-musl" "1.2.239" + "@swc/core-linux-x64-gnu" "1.2.239" + "@swc/core-linux-x64-musl" "1.2.239" + "@swc/core-win32-arm64-msvc" "1.2.239" + "@swc/core-win32-ia32-msvc" "1.2.239" + "@swc/core-win32-x64-msvc" "1.2.239" + +"@swc/wasm@1.2.122": + version "1.2.122" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.122.tgz#87a5e654b26a71b2e84b801f41e45f823b856639" + integrity sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ== + +"@swc/wasm@1.2.130": + version "1.2.130" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" + integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== "@testing-library/dom@^8.3.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.14.0.tgz#c9830a21006d87b9ef6e1aae306cf49b0283e28e" - integrity sha512-m8FOdUo77iMTwVRCyzWcqxlEIk+GnopbrRI15a0EaLbpZSCinIVI4kSQzWhkShK83GogvEFJSsHF3Ws0z1vrqA== + version "8.17.1" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.17.1.tgz#2d7af4ff6dad8d837630fecd08835aee08320ad7" + integrity sha512-KnH2MnJUzmFNPW6RIKfd+zf2Wue8mEKX0M3cpX6aKl5ZXrJM1/c/Pc8c2xDNYQCnJO48Sm5ITbMXgqTr3h4jxQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -2221,9 +2235,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.5" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" - integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== + version "8.4.6" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" + integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2279,9 +2293,9 @@ integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/lodash@^4.14.167": - version "4.14.182" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" - integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== + version "4.14.184" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe" + integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== "@types/mdast@^3.0.0": version "3.0.10" @@ -2304,14 +2318,14 @@ form-data "^3.0.0" "@types/node@*": - version "18.6.3" - resolved "https://registry.npmjs.org/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98" - integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg== + version "18.7.6" + resolved "https://registry.npmjs.org/@types/node/-/node-18.7.6.tgz#31743bc5772b6ac223845e18c3fc26f042713c83" + integrity sha512-EdxgKRXgYsNITy5mjjXjVE/CS8YENSdhiagGrLqjG0pvA2owgJ6i4l7wy/PFZGC0B1/H20lWKN7ONVDNYDZm7A== "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0": - version "16.11.47" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz#efa9e3e0f72e7aa6a138055dace7437a83d9f91c" - integrity sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g== + version "16.11.49" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.49.tgz#560b1ea774b61e19a89c3fc72d2dcaa3863f38b2" + integrity sha512-Abq9fBviLV93OiXMu+f6r0elxCzRwc0RC5f99cU892uBITL44pTvgvEqlRlPRi8EGcO1z7Cp8A4d0s/p3J/+Nw== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -2354,9 +2368,9 @@ integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/uglify-js@*": - version "3.16.0" - resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.16.0.tgz#2cf74a0e6ebb6cd54c0d48e509d5bd91160a9602" - integrity sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g== + version "3.17.0" + resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.0.tgz#95271e7abe0bf7094c60284f76ee43232aef43b9" + integrity sha512-3HO6rm0y+/cqvOyA8xcYLweF0TKXlAxmQASjbOi49Co51A1N4nR4bEwBgRoD9kNM+rqFGArjKr654SLp2CoGmQ== dependencies: source-map "^0.6.1" @@ -2366,9 +2380,9 @@ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/webpack-env@^1.16.0": - version "1.17.0" - resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.17.0.tgz#f99ce359f1bfd87da90cc4a57cab0a18f34a48d0" - integrity sha512-eHSaNYEyxRA5IAG0Ym/yCyf86niZUIF/TpWKofQI/CVfh5HsMEUyfE2kwFxha4ow0s5g0LfISQxpDKjbRDrizw== + version "1.18.0" + resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz#ed6ecaa8e5ed5dfe8b2b3d00181702c9925f13fb" + integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== "@types/webpack-sources@*": version "3.2.0" @@ -2659,11 +2673,6 @@ ansi-to-html@^0.6.11: dependencies: entities "^2.0.0" -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - anymatch@^3.0.0, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -3204,9 +3213,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001370: - version "1.0.30001373" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz#2dc3bc3bfcb5d5a929bec11300883040d7b4b4be" - integrity sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ== + version "1.0.30001378" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz#3d2159bf5a8f9ca093275b0d3ecc717b00f27b67" + integrity sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA== case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" @@ -3400,7 +3409,7 @@ commander@^2.19.0, commander@^2.20.0: resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.0, commander@^4.1.1: +commander@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -3860,9 +3869,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.202: - version "1.4.210" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.210.tgz#12611fe874b833a3bf3671438b5893aba7858980" - integrity sha512-kSiX4tuyZijV7Cz0MWVmGT8K2siqaOA4Z66K5dCttPPRh0HicOcOAEj1KlC8O8J1aOS/1M8rGofOzksLKaHWcQ== + version "1.4.225" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.225.tgz#3e27bdd157cbaf19768141f2e0f0f45071e52338" + integrity sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw== element-resize-detector@^1.2.2: version "1.2.4" @@ -4229,7 +4238,7 @@ fast-json-stable-stringify@^2.0.0: fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: version "1.13.0" @@ -4584,18 +4593,6 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -5129,9 +5126,9 @@ is-callable@^1.1.4, is-callable@^1.2.4: integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + version "2.10.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== dependencies: has "^1.0.3" @@ -6009,15 +6006,6 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - nanoid@^3.3.1, nanoid@^3.3.4: version "3.3.4" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -6163,13 +6151,13 @@ object-visit@^1.0.0: isobject "^3.0.0" object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" object.entries@^1.1.0: @@ -6555,7 +6543,7 @@ pinkie@^2.0.0: resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== -pirates@^4.0.1, pirates@^4.0.5: +pirates@^4.0.5: version "4.0.5" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== @@ -6701,9 +6689,9 @@ postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0 source-map "^0.6.1" postcss@^8.2.15: - version "8.4.14" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + version "8.4.16" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" @@ -6851,11 +6839,6 @@ qs@^6.10.0: dependencies: side-channel "^1.0.4" -querystring@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -7811,18 +7794,6 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -sucrase@^3.21.0: - version "3.25.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.25.0.tgz#6dffa34e614b3347877507a4380cc4f022b7b7aa" - integrity sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ== - dependencies: - commander "^4.0.0" - glob "7.1.6" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -7849,6 +7820,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +swc-loader@^0.2.1: + version "0.2.3" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz#6792f1c2e4c9ae9bf9b933b3e010210e270c186d" + integrity sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A== + symbol.prototype.description@^1.0.0: version "1.0.5" resolved "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz#d30e01263b6020fbbd2d2884a6276ce4d49ab568" @@ -7916,15 +7892,15 @@ terser-webpack-plugin@^4.2.3: webpack-sources "^1.4.3" terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.3: - version "5.3.3" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" - integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== + version "5.3.5" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc" + integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.14" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" - terser "^5.7.2" + terser "^5.14.1" terser@^4.6.3: version "4.8.1" @@ -7935,7 +7911,7 @@ terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.10.0, terser@^5.3.4, terser@^5.7.2: +terser@^5.10.0, terser@^5.14.1, terser@^5.3.4: version "5.14.2" resolved "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== @@ -7954,20 +7930,6 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - throttle-debounce@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" @@ -8045,11 +8007,6 @@ ts-dedent@^2.0.0, ts-dedent@^2.2.0: resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -8091,9 +8048,9 @@ type-is@~1.6.18: mime-types "~2.1.24" uglify-js@^3.1.4: - version "3.16.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz#94c7a63337ee31227a18d03b8a3041c210fd1f1d" - integrity sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw== + version "3.17.0" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz#55bd6e9d19ce5eef0d5ad17cd1f587d85b180a85" + integrity sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg== unbox-primitive@^1.0.2: version "1.0.2" @@ -8419,13 +8376,12 @@ webpack-filter-warnings-plugin@^1.2.1: integrity sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg== webpack-hot-middleware@^2.25.1: - version "2.25.1" - resolved "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz#581f59edf0781743f4ca4c200fd32c9266c6cf7c" - integrity sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw== + version "2.25.2" + resolved "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.2.tgz#f7f936f3871d8c4eb95ecdf23a34e9cefe9806e8" + integrity sha512-CVgm3NAQyfdIonRvXisRwPTUYuSbyZ6BY7782tMeUzWOO7RmVI2NaBYuCp41qyD4gYCkJyTneAJdK69A13B0+A== dependencies: ansi-html-community "0.0.8" html-entities "^2.1.0" - querystring "^0.2.0" strip-ansi "^6.0.0" webpack-log@^2.0.0: From 73b5d147f58fe1284d66980382b2c42477c66355 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 14:28:50 +0200 Subject: [PATCH 246/275] chore: bump dependencies Signed-off-by: blam Signed-off-by: blam --- packages/cli/package.json | 6 +++--- storybook/package.json | 4 ++-- storybook/yarn.lock | 4 ++-- yarn.lock | 12 ++++++------ 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 28e72fe02f..47e7f8108a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,8 +49,8 @@ "@spotify/eslint-config-typescript": "^14.0.0", "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", - "@swc/core": "^1.2.160", - "@swc/jest": "^0.2.20", + "@swc/core": "^1.2.239", + "@swc/jest": "^0.2.22", "@svgr/plugin-jsx": "6.3.x", "@svgr/plugin-svgo": "6.3.x", "@svgr/rollup": "6.3.x", @@ -115,7 +115,7 @@ "run-script-webpack-plugin": "^0.1.0", "semver": "^7.3.2", "style-loader": "^3.3.1", - "swc-loader": "^0.2.1", + "swc-loader": "^0.2.3", "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", "util": "^0.12.3", diff --git a/storybook/package.json b/storybook/package.json index fabbc0edde..3197a604a2 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -8,11 +8,11 @@ "build-storybook": "build-storybook --output-dir dist" }, "dependencies": { - "swc-loader": "^0.2.1", + "swc-loader": "^0.2.3", "react": "^17.0.2", "react-dom": "^17.0.2", "react-hot-loader": "^4.13.0", - "@swc/core": "^1.2.186" + "@swc/core": "^1.2.239" }, "devDependencies": { "@storybook/addon-a11y": "^6.5.9", diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 05d0a95472..7e80518c55 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2171,7 +2171,7 @@ resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.239.tgz#e0bbbedfcebf2dcf876cdfb438318407cbe4b288" integrity sha512-qktIdFdGS6dpDnOGnImrOA9GpNMsVaGAycGcvoqoUYEkPf8dFCLKthEOzqA1fU01wKn3r1M5mi1eluM1ld5Hng== -"@swc/core@^1.2.186": +"@swc/core@^1.2.239": version "1.2.239" resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.239.tgz#4a28f9962f5e7ae1094368243c52168d36258eef" integrity sha512-U3tbnOBykfLGIJRQ+bSxVsgyTPQ5l9zTe2YQq3GULnxe6rfsgEYN54Uelp9vr3w7LXfW0k+bteXS6YGLpmnEfw== @@ -7820,7 +7820,7 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -swc-loader@^0.2.1: +swc-loader@^0.2.3: version "0.2.3" resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz#6792f1c2e4c9ae9bf9b933b3e010210e270c186d" integrity sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A== diff --git a/yarn.lock b/yarn.lock index 3e6f9d0dae..2d48101cf9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6317,7 +6317,7 @@ resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.239.tgz#e0bbbedfcebf2dcf876cdfb438318407cbe4b288" integrity sha512-qktIdFdGS6dpDnOGnImrOA9GpNMsVaGAycGcvoqoUYEkPf8dFCLKthEOzqA1fU01wKn3r1M5mi1eluM1ld5Hng== -"@swc/core@^1.2.160": +"@swc/core@^1.2.239": version "1.2.239" resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.239.tgz#4a28f9962f5e7ae1094368243c52168d36258eef" integrity sha512-U3tbnOBykfLGIJRQ+bSxVsgyTPQ5l9zTe2YQq3GULnxe6rfsgEYN54Uelp9vr3w7LXfW0k+bteXS6YGLpmnEfw== @@ -6336,7 +6336,7 @@ "@swc/core-win32-ia32-msvc" "1.2.239" "@swc/core-win32-x64-msvc" "1.2.239" -"@swc/jest@^0.2.20": +"@swc/jest@^0.2.22": version "0.2.22" resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" integrity sha512-PIUIk9IdB1oAVfF9zNIfYoMBoEhahrrSvyryFANas7swC1cF0L5HR0f9X4qfet46oyCHCBtNcSpN0XJEOFIKlw== @@ -24766,10 +24766,10 @@ swap-case@^2.0.2: dependencies: tslib "^2.0.3" -swc-loader@^0.2.1: - version "0.2.2" - resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.2.tgz#3e2f4efc91bd4a3928fb22cbdcfdd8135b5aec78" - integrity sha512-haRGcIwvRj8BLv7Un2qT/fMHNYN0DKJJPZV9gi39//vgglvpiFsXTM9jxLmpeNl3lhZ8G5/lGXkKfbvfE0VCsQ== +swc-loader@^0.2.3: + version "0.2.3" + resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz#6792f1c2e4c9ae9bf9b933b3e010210e270c186d" + integrity sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A== swr@^1.1.2: version "1.3.0" From 30c894cf061d0713bbf445f56c66785102e83d9a Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 14:31:59 +0200 Subject: [PATCH 247/275] chore: revert aws stuff Signed-off-by: blam Signed-off-by: blam --- .../backend-common/src/reading/AwsS3UrlReader.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index 5d471dfae7..7c314cf036 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import aws from 'aws-sdk'; +import aws, { Credentials, S3 } from 'aws-sdk'; import { CredentialsOptions } from 'aws-sdk/lib/credentials'; import { ReaderFactory, @@ -126,7 +126,7 @@ export class AwsS3UrlReader implements UrlReader { return integrations.awsS3.list().map(integration => { const credentials = AwsS3UrlReader.buildCredentials(integration); - const s3 = new aws.S3({ + const s3 = new S3({ apiVersion: '2006-03-01', credentials, endpoint: integration.config.endpoint, @@ -145,7 +145,7 @@ export class AwsS3UrlReader implements UrlReader { constructor( private readonly integration: AwsS3Integration, private readonly deps: { - s3: aws.S3; + s3: S3; treeResponseFactory: ReadTreeResponseFactory; }, ) {} @@ -156,17 +156,17 @@ export class AwsS3UrlReader implements UrlReader { */ private static buildCredentials( integration?: AwsS3Integration, - ): aws.Credentials | CredentialsOptions | undefined { + ): Credentials | CredentialsOptions | undefined { if (!integration) { return undefined; } const accessKeyId = integration.config.accessKeyId; const secretAccessKey = integration.config.secretAccessKey; - let explicitCredentials: aws.Credentials | undefined; + let explicitCredentials: Credentials | undefined; if (accessKeyId && secretAccessKey) { - explicitCredentials = new aws.Credentials({ + explicitCredentials = new Credentials({ accessKeyId, secretAccessKey, }); From d4a8022d7e449d958cc9d75c578acfdd712d9364 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 14:33:10 +0200 Subject: [PATCH 248/275] chore: fix Signed-off-by: blam Signed-off-by: blam --- packages/backend-common/api-report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index af62238925..8362c3ab2f 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -8,7 +8,6 @@ import { AbortController as AbortController_2 } from 'node-abort-controller'; import { AbortSignal as AbortSignal_2 } from 'node-abort-controller'; -import aws from 'aws-sdk'; import { AwsS3Integration } from '@backstage/integration'; import { AzureIntegration } from '@backstage/integration'; import { BitbucketCloudIntegration } from '@backstage/integration'; @@ -35,6 +34,7 @@ import { Readable } from 'stream'; import { ReadCommitResult } from 'isomorphic-git'; import { RequestHandler } from 'express'; import { Router } from 'express'; +import { S3 } from 'aws-sdk'; import { Server } from 'http'; import * as winston from 'winston'; import { Writable } from 'stream'; @@ -44,7 +44,7 @@ export class AwsS3UrlReader implements UrlReader { constructor( integration: AwsS3Integration, deps: { - s3: aws.S3; + s3: S3; treeResponseFactory: ReadTreeResponseFactory; }, ); From c14f4161c2a2f8bdc4ec72575dd920d02bd1b02b Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 14:36:29 +0200 Subject: [PATCH 249/275] chore: bump some more dependencies Signed-off-by: blam --- packages/cli/package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 47e7f8108a..b206a415cf 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -39,7 +39,7 @@ "@backstage/types": "^1.0.0", "@manypkg/get-packages": "^1.1.3", "@octokit/request": "^6.0.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@rollup/plugin-commonjs": "^22.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", @@ -104,7 +104,7 @@ "process": "^0.11.10", "react-dev-utils": "^12.0.0-next.60", "react-hot-loader": "^4.13.0", - "react-refresh": "^0.11.0", + "react-refresh": "^0.14.0", "recursive-readdir": "^2.2.2", "replace-in-file": "^6.0.0", "rollup": "^2.60.2", diff --git a/yarn.lock b/yarn.lock index 2d48101cf9..345ce50ef1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5735,10 +5735,10 @@ tslib "^2.4.0" webcrypto-core "^1.7.4" -"@pmmmwh/react-refresh-webpack-plugin@^0.5.4": - version "0.5.4" - resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz#df0d0d855fc527db48aac93c218a0bf4ada41f99" - integrity sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw== +"@pmmmwh/react-refresh-webpack-plugin@^0.5.7": + version "0.5.7" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz#58f8217ba70069cc6a73f5d7e05e85b458c150e2" + integrity sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q== dependencies: ansi-html-community "^0.0.8" common-path-prefix "^3.0.0" @@ -22200,10 +22200,10 @@ react-redux@^7.1.1, react-redux@^7.2.4: prop-types "^15.7.2" react-is "^16.13.1" -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== react-resize-detector@^2.3.0: version "2.3.0" From 1de5594c756756792f3939cb43406de8e2d3cf07 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 15:54:47 +0200 Subject: [PATCH 250/275] chore: reworking tests for swc Signed-off-by: blam --- .../src/actions/fetch/cookiecutter.test.ts | 33 ++++++++------- .../fetch/rails/railsNewRunner.test.ts | 20 ++++----- .../src/service/router.test.ts | 6 +-- .../TechDocsReaderPageContent.test.tsx | 42 ++++++++----------- 4 files changed, 48 insertions(+), 53 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index 6ba83fdf77..3b235b9650 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -14,13 +14,6 @@ * limitations under the License. */ -jest.mock('@backstage/plugin-scaffolder-backend', () => ({ - ...jest.requireActual('@backstage/plugin-scaffolder-backend'), - fetchContents: jest.fn(), - executeShellCommand: jest.fn(), -})); -jest.mock('command-exists', () => jest.fn()); - import { getVoidLogger, UrlReader, @@ -34,18 +27,26 @@ import os from 'os'; import { PassThrough } from 'stream'; import { createFetchCookiecutterAction } from './cookiecutter'; import { join } from 'path'; -import { - fetchContents as fetchContentsMock, - executeShellCommand as executeShellCommandMock, -} from '@backstage/plugin-scaffolder-backend'; import type { ActionContext } from '@backstage/plugin-scaffolder-backend'; -import commandExistsMock from 'command-exists'; + +const executeShellCommand = jest.fn(); +const commandExists = jest.fn(); +const fetchContents = jest.fn(); + +jest.mock('@backstage/plugin-scaffolder-backend', () => ({ + ...jest.requireActual('@backstage/plugin-scaffolder-backend'), + fetchContents: (...args: any[]) => fetchContents(...args), + executeShellCommand: (...args: any[]) => executeShellCommand(...args), +})); + +jest.mock( + 'command-exists', + () => + (...args: any[]) => + commandExists(...args), +); describe('fetch:cookiecutter', () => { - const fetchContents = fetchContentsMock as jest.Mock; - const executeShellCommand = executeShellCommandMock as jest.Mock; - const commandExists = commandExistsMock as unknown as jest.Mock; - const integrations = ScmIntegrations.fromConfig( new ConfigReader({ integrations: { diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 7a3f3be722..433a1b7965 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -14,27 +14,27 @@ * limitations under the License. */ +const executeShellCommand = jest.fn(); +const commandExists = jest.fn(); + jest.mock('@backstage/plugin-scaffolder-backend', () => ({ - executeShellCommand: jest.fn(), + executeShellCommand: (...args: any[]) => executeShellCommand(...args), })); -jest.mock('command-exists', () => jest.fn()); +jest.mock( + 'command-exists', + () => + (...args: any[]) => + commandExists(...args), +); jest.mock('fs-extra'); import { ContainerRunner } from '@backstage/backend-common'; import fs from 'fs-extra'; - import path from 'path'; import { PassThrough } from 'stream'; - import { RailsNewRunner } from './railsNewRunner'; -import { executeShellCommand as executeShellCommandMock } from '@backstage/plugin-scaffolder-backend'; -import commandExistsMock from 'command-exists'; - describe('Rails Templater', () => { - const executeShellCommand = executeShellCommandMock as jest.Mock; - const commandExists = commandExistsMock as unknown as jest.Mock; - const containerRunner: jest.Mocked = { runContainer: jest.fn(), }; diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 4079fd0114..49b3e358c7 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -43,10 +43,10 @@ import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; const mockAccess = jest.fn(); -jest.doMock('fs-extra', () => ({ - access: mockAccess, +jest.mock('fs-extra', () => ({ + access: (...args: any[]) => mockAccess(...args), promises: { - access: mockAccess, + access: (...args: any[]) => mockAccess(...args), }, constants: { F_OK: 0, diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx index 4b169d9b7d..7db00f6590 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.test.tsx @@ -13,16 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -jest.mock('./dom', () => ({ - ...jest.requireActual('./dom'), - useTechDocsReaderDom: jest.fn(), -})); - -jest.mock('../useReaderState', () => ({ - ...jest.requireActual('../useReaderState'), - useReaderState: jest.fn(), -})); - import React from 'react'; import { act, waitFor } from '@testing-library/react'; @@ -35,8 +25,18 @@ import { TechDocsReaderPageProvider, } from '@backstage/plugin-techdocs-react'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; -import { useTechDocsReaderDom } from './dom'; -import { useReaderState } from '../useReaderState'; + +const useTechDocsReaderDom = jest.fn(); +jest.mock('./dom', () => ({ + ...jest.requireActual('./dom'), + useTechDocsReaderDom: (...args: any[]) => useTechDocsReaderDom(...args), +})); +const useReaderState = jest.fn(); +jest.mock('../useReaderState', () => ({ + ...jest.requireActual('../useReaderState'), + useReaderState: (...args: any[]) => useReaderState(...args), +})); + import { TechDocsReaderPageContent } from './TechDocsReaderPageContent'; const mockEntityMetadata = { @@ -92,10 +92,8 @@ describe('', () => { it('should render techdocs page content', async () => { getEntityMetadata.mockResolvedValue(mockEntityMetadata); getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); - (useTechDocsReaderDom as jest.Mock).mockReturnValue( - document.createElement('html'), - ); - (useReaderState as jest.Mock).mockReturnValue({ state: 'cached' }); + useTechDocsReaderDom.mockReturnValue(document.createElement('html')); + useReaderState.mockReturnValue({ state: 'cached' }); await act(async () => { const rendered = await renderInTestApp( @@ -114,10 +112,8 @@ describe('', () => { it('should not render techdocs content if entity metadata is missing', async () => { getEntityMetadata.mockResolvedValue(undefined); - (useTechDocsReaderDom as jest.Mock).mockReturnValue( - document.createElement('html'), - ); - (useReaderState as jest.Mock).mockReturnValue({ state: 'cached' }); + useTechDocsReaderDom.mockReturnValue(document.createElement('html')); + useReaderState.mockReturnValue({ state: 'cached' }); await act(async () => { const rendered = await renderInTestApp( @@ -140,10 +136,8 @@ describe('', () => { it('should render 404 if there is no dom and reader state is not found', async () => { getEntityMetadata.mockResolvedValue(mockEntityMetadata); getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata); - (useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined); - (useReaderState as jest.Mock).mockReturnValue({ - state: 'CONTENT_NOT_FOUND', - }); + useTechDocsReaderDom.mockReturnValue(undefined); + useReaderState.mockReturnValue({ state: 'CONTENT_NOT_FOUND' }); await act(async () => { const rendered = await renderInTestApp( From b27099595f149c03d5669757e8baef857fd95b2f Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 16:26:55 +0200 Subject: [PATCH 251/275] chore: this should work (famous last words) Signed-off-by: blam Signed-off-by: blam --- .../src/reading/AwsS3UrlReader.ts | 12 +- packages/cli/config/jestSucraseTransform.js | 91 ++++++++++ packages/cli/package.json | 3 +- .../AwsS3DiscoveryProcessor.test.ts | 16 +- yarn.lock | 162 ++++++++---------- 5 files changed, 178 insertions(+), 106 deletions(-) create mode 100644 packages/cli/config/jestSucraseTransform.js diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index 7c314cf036..5d471dfae7 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import aws, { Credentials, S3 } from 'aws-sdk'; +import aws from 'aws-sdk'; import { CredentialsOptions } from 'aws-sdk/lib/credentials'; import { ReaderFactory, @@ -126,7 +126,7 @@ export class AwsS3UrlReader implements UrlReader { return integrations.awsS3.list().map(integration => { const credentials = AwsS3UrlReader.buildCredentials(integration); - const s3 = new S3({ + const s3 = new aws.S3({ apiVersion: '2006-03-01', credentials, endpoint: integration.config.endpoint, @@ -145,7 +145,7 @@ export class AwsS3UrlReader implements UrlReader { constructor( private readonly integration: AwsS3Integration, private readonly deps: { - s3: S3; + s3: aws.S3; treeResponseFactory: ReadTreeResponseFactory; }, ) {} @@ -156,17 +156,17 @@ export class AwsS3UrlReader implements UrlReader { */ private static buildCredentials( integration?: AwsS3Integration, - ): Credentials | CredentialsOptions | undefined { + ): aws.Credentials | CredentialsOptions | undefined { if (!integration) { return undefined; } const accessKeyId = integration.config.accessKeyId; const secretAccessKey = integration.config.secretAccessKey; - let explicitCredentials: Credentials | undefined; + let explicitCredentials: aws.Credentials | undefined; if (accessKeyId && secretAccessKey) { - explicitCredentials = new Credentials({ + explicitCredentials = new aws.Credentials({ accessKeyId, secretAccessKey, }); diff --git a/packages/cli/config/jestSucraseTransform.js b/packages/cli/config/jestSucraseTransform.js new file mode 100644 index 0000000000..d0400f4f3b --- /dev/null +++ b/packages/cli/config/jestSucraseTransform.js @@ -0,0 +1,91 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const { createHash } = require('crypto'); +const { transform } = require('sucrase'); +const sucrasePkg = require('sucrase/package.json'); +const sucrasePluginPkg = require('@sucrase/jest-plugin/package.json'); + +const ESM_REGEX = /\b(?:import|export)\b/; + +function createTransformer(config) { + const process = (source, filePath) => { + let transforms; + + if (filePath.endsWith('.esm.js')) { + transforms = ['imports']; + } else if (filePath.endsWith('.js')) { + // This is a very rough filter to avoid transforming things that we quickly + // can be sure are definitely not ESM modules. + if (ESM_REGEX.test(source)) { + transforms = ['imports', 'jsx']; // JSX within .js is currently allowed + } + } else if (filePath.endsWith('.jsx')) { + transforms = ['jsx', 'imports']; + } else if (filePath.endsWith('.ts')) { + transforms = ['typescript', 'imports']; + } else if (filePath.endsWith('.tsx')) { + transforms = ['typescript', 'jsx', 'imports']; + } + + // Only apply the jest transform to the test files themselves + if (transforms && filePath.includes('.test.')) { + transforms.push('jest'); + } + + if (transforms) { + const { code, sourceMap: map } = transform(source, { + transforms, + filePath, + disableESTransforms: true, + sourceMapOptions: { + compiledFilename: filePath, + }, + }); + if (config.enableSourceMaps) { + const b64 = Buffer.from(JSON.stringify(map), 'utf8').toString('base64'); + const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${b64}`; + // Include both inline and object source maps, as inline source maps are + // needed for support of some editor integrations. + return { code: `${code}\n${suffix}`, map }; + } + // We only return the `map` result if source maps are enabled, as they + // have a negative impact on the coverage accuracy. + return code; + } + + return source; + }; + + // TODO: contribute something like this to @sucrase/jest-plugin + const getCacheKey = sourceText => { + return createHash('md5') + .update(sourceText) + .update(Buffer.alloc(1)) + .update(sucrasePkg.version) + .update(Buffer.alloc(1)) + .update(sucrasePluginPkg.version) + .update(Buffer.alloc(1)) + .update(JSON.stringify(config)) + .update(Buffer.alloc(1)) + .update('1') // increment whenever the transform logic in this file changes + .digest('hex'); + }; + + return { process, getCacheKey }; +} + +module.exports = { createTransformer }; diff --git a/packages/cli/package.json b/packages/cli/package.json index b206a415cf..0719b1511a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,7 +49,7 @@ "@spotify/eslint-config-typescript": "^14.0.0", "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", - "@swc/core": "^1.2.239", + "@swc/core": "1.2.205", "@swc/jest": "^0.2.22", "@svgr/plugin-jsx": "6.3.x", "@svgr/plugin-svgo": "6.3.x", @@ -70,6 +70,7 @@ "esbuild": "^0.14.10", "esbuild-loader": "^2.18.0", "eslint": "^8.6.0", + "sucrase": "^3.20.2", "eslint-config-prettier": "^8.3.0", "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-deprecation": "^1.3.2", diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts index 6aab7b2bec..49dc70ae5e 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts @@ -13,7 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import mockAws from 'aws-sdk-mock'; +import aws from 'aws-sdk'; +import path from 'path'; import { getVoidLogger, UrlReaders } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { AwsS3DiscoveryProcessor } from './AwsS3DiscoveryProcessor'; @@ -22,12 +24,8 @@ import { CatalogProcessorResult, processingResult, } from '@backstage/plugin-catalog-backend'; -import AWSMock from 'aws-sdk-mock'; -import aws from 'aws-sdk'; -import path from 'path'; import YAML from 'yaml'; -AWSMock.setSDKInstance(aws); const object: aws.S3.Types.Object = { Key: 'awsS3-mock-object.txt', }; @@ -35,8 +33,11 @@ const objectList: aws.S3.ObjectList = [object]; const output: aws.S3.Types.ListObjectsV2Output = { Contents: objectList, }; -AWSMock.mock('S3', 'listObjectsV2', output); -AWSMock.mock( + +mockAws.setSDKInstance(require('aws-sdk')); + +mockAws.mock('S3', 'listObjectsV2', output); +mockAws.mock( 'S3', 'getObject', Buffer.from( @@ -75,6 +76,7 @@ describe('readLocation', () => { }, ), )) as CatalogProcessorEntityResult; + console.log(generated); expect(generated.type).toBe('entity'); expect(generated.location).toEqual({ target: 'awsS3-mock-object.txt', diff --git a/yarn.lock b/yarn.lock index 345ce50ef1..9d580b537d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6240,101 +6240,89 @@ "@svgr/plugin-jsx" "^6.3.1" "@svgr/plugin-svgo" "^6.3.1" -"@swc/core-android-arm-eabi@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.239.tgz#4b9848b9dbeefb9c3de413f668d6c5a2b3f74333" - integrity sha512-v316u9E517XQ48YwtkvfwN3nKw6oirJrBOmniA0IM5qhZYOIHDvm3YEhD+hmlEXWbRJ2iwK3ecN3J/HN725I8g== - dependencies: - "@swc/wasm" "1.2.122" +"@swc/core-android-arm-eabi@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.205.tgz#d8ca076cbfbe92f17297de0e6b2754a7ae3a8e2f" + integrity sha512-HfiuVA1JDHMSRQ8nE1DcemUgZ1PKaPwit4i7q3xin0NVbVHY1xkJyQFuLVh3VxTvGKKkF3hi8GJMVQgOXWL6kg== -"@swc/core-android-arm64@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.239.tgz#6f44c684924a62fb22474af49feabd2d33581ead" - integrity sha512-HZRYhiRpTetnABVZIVEVnDDBSu+O/FP8sD1g+/dnYx8RZzbfbAsxvnauTRRuWDaqr3wcjDxGYCHiNf8Chaf2LQ== - dependencies: - "@swc/wasm" "1.2.130" +"@swc/core-android-arm64@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.205.tgz#cb822dad076b1c30b990a2037147ae42f66bf98e" + integrity sha512-sRGZBV2dOnmh8gWWFo9HVOHdKa33zIsF8/8oYEGtq+2/s96UlAKltO2AA7HH9RaO/fT1tzBZStp+fEMUhDk/FA== -"@swc/core-darwin-arm64@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.239.tgz#c7339507d9ff62dd89d2e0e9c6c12be964ed6e9d" - integrity sha512-qucvHgJ5VQVZNdQacqbloWDYqZyD1pttBqyRWo3Wqr5mC+JAIJl+JsflFpV8QEgY52aMgk/cLVhTa46Si3L3Jw== +"@swc/core-darwin-arm64@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.205.tgz#1a3340e21459cdeea2224057ddf031a330782424" + integrity sha512-JwVDfKS7vp7zzOQXWNwwcF41h4r3DWEpK6DQjz18WJyS1VVOcpVQGyuE7kSPjcnG01ZxBL9JPwwT353i/8IwDg== -"@swc/core-darwin-x64@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.239.tgz#957d9a6dd4e7ee748c8d76d47e3d91079932b8bf" - integrity sha512-0iunP9diQpjtacY+YQDwWmUANe4nA54aPDcum4O2vnhFeAXWoYX0b7FmYdq7UqxpP5IxcBgQAl7QhEfDnGrvoA== +"@swc/core-darwin-x64@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.205.tgz#7a6552acd42482ecb84b1c90c0defad408ac81cc" + integrity sha512-malz2I+w6xFF1QyTmPGt0Y0NEMbUcrvfr5gUfZDGjxMhPPlS7k6fXucuZxVr9VVaM+JGq1SidVODmZ84jb1qHg== -"@swc/core-freebsd-x64@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.239.tgz#cb824b681f6efb9456387083990556ac2e2ca16d" - integrity sha512-CA5yf6hd6czwIHlp/89Y03B+19+3EWCAPESjAPmJFjiNv4aGtzkSH+cYljmKYSkkQlYXGdKAc3d5GwL0sUaQgQ== - dependencies: - "@swc/wasm" "1.2.130" +"@swc/core-freebsd-x64@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.205.tgz#d58f48d5de9a2babd609802338bd8e8934fec39a" + integrity sha512-/nZrG1z0T7h97AsOb/wOtYlnh4WEuNppv3XKQIMPj32YNQdMBVgpybVTVRIs1GQGZMd1/7jAy5BVQcwQjUbrLg== -"@swc/core-linux-arm-gnueabihf@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.239.tgz#c88aca1b8bcb36eff80a3f6668c80e3a97c2a806" - integrity sha512-/GsCHvbPcsFF6kYiWyDan8zq1t/Jc5/ksMTWuENmokMBGdTECffFZAtx44V25Iw6Ip6Oe5Uzo7Mdabh4U6sbmA== - dependencies: - "@swc/wasm" "1.2.130" +"@swc/core-linux-arm-gnueabihf@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.205.tgz#33f7f639ab64dc8c9229a2e63fc025db50905345" + integrity sha512-mTA3vETMdBmpecUyI9waZYsp7FABhew4e81psspmFpDyfty0SLISWZDnvPAn0pSnb2fWhzKwDC5kdXHKUmLJuA== -"@swc/core-linux-arm64-gnu@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.239.tgz#3e1d113c57d3b031aff78b140dcf3d5bb0b96ec9" - integrity sha512-VZ/oShno1H+ElO5FuhIacSvSgv5Ftzifkv1iAy9pi8e9cV6Y5RCxIEm6C28nCXNiyrSo5/AqqejGEZKt2pEblA== +"@swc/core-linux-arm64-gnu@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.205.tgz#ab3aef46cb3792368cfdb1ff1fa9af4df0664e17" + integrity sha512-qGzFGryeQE+O5SFK7Nn2ESqCEnv00rnzhf11WZF9V71EZ15amIhmbcwHqvFpoRSDw8hZnqoGqfPRfoJbouptnA== -"@swc/core-linux-arm64-musl@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.239.tgz#f7aacbdd2797a35ec5a0c55a128119735f9a0b8e" - integrity sha512-d24/2NEuvRAVFEFNRwwjlzuZhe442oUnhLuWRqh13bRBY7cRde3KIrxl4IMiVd5GvVKUy4JlhClmiV7Su9nVKw== +"@swc/core-linux-arm64-musl@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.205.tgz#20e79f0a3cfbe0d803ad256fd422ee17b52e3464" + integrity sha512-uLJoX9L/4Xg3sLMjAbIhzbTe5gD/MBA8VETBeEkLtgb7a0ys1kvn9xQ6qLw6A71amEPlI+VABnoTRdUEaBSV9Q== -"@swc/core-linux-x64-gnu@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.239.tgz#84d64156ccd513319ff30474c5d5feec1f2d30ef" - integrity sha512-OKjj99kfCSrMEvWbWftSAgj29v5TxII+KCAuA284NoGYVcezzaO37C4TfrDjOW5/wtvDfWk97w8FfsOmrWKl0A== +"@swc/core-linux-x64-gnu@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.205.tgz#7e698ca21854a038f973ed5cb2d195ae00b0707a" + integrity sha512-gQsjcYlkWKP1kceQIsoHGrOrG7ygW3ojNsSnYoZ5DG5PipRA4eeUfO9YIfrmoa29LiVNjmRPfUJa8O1UHDG5ew== -"@swc/core-linux-x64-musl@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.239.tgz#d40c6b98eab92aea3920c3b63055f661491c1403" - integrity sha512-BsX/ivpDmYFeqOHz5gA5OqtskO5mkEKyBRhhVnzc9AG9tbhz8X5zZMLPV398RCn48lmS/uS8MPXHkJKAlYA1BA== +"@swc/core-linux-x64-musl@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.205.tgz#e9aeb2bdf4aad466d1250d67aade0984cd6c4812" + integrity sha512-LR5ukqBltQc++2eX3qEj/H8KtOt0V3CmtgXNOiNCUxvPDT8mYz/8MJhYOrofonND0RKfXyyPW7dRxg62ceTLSQ== -"@swc/core-win32-arm64-msvc@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.239.tgz#2aa64338bf111109bef89e42f12e57cb2812edea" - integrity sha512-C5es8Aou6+PnZmk+h+Kay/UCctkwCPRonwRajLDa88x2elhmxE1pdLIPAJVp5RpOlFoPRbJAkc5I+4fV5njZ9g== - dependencies: - "@swc/wasm" "1.2.130" +"@swc/core-win32-arm64-msvc@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.205.tgz#c46bf0adc703d199fd1eeef4a811913cb0e74164" + integrity sha512-NjcLWm4mOy78LAEt7pqFl+SLcCyqnSlUP729XRd1uRvKwt1Cwch5SQRdoaFqwf1DaEQy4H4iuGPynkfarlb1kQ== -"@swc/core-win32-ia32-msvc@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.239.tgz#842d747ec3c864f4f9217f1b1964cb814ee51dc7" - integrity sha512-24VMplxQTtOJk7cxpBViq9HozSc6Pg6MxBMuudTmGh6z3L//VxLn0wpUR9jLEvRUk/2i1p1DKpc6RQ0tYcNf9A== - dependencies: - "@swc/wasm" "1.2.130" +"@swc/core-win32-ia32-msvc@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.205.tgz#f1aa4a72670c6367282e39f81052d51287b23497" + integrity sha512-+6byrRxIXgZ0zmLL6ZeX1HBBrAqvCy8MR5Yz0SO26jR8OPZXJCgZXL9BTsZO+YEG4f32ZOlZh3nnHCl6Dcb4GA== -"@swc/core-win32-x64-msvc@1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.239.tgz#e0bbbedfcebf2dcf876cdfb438318407cbe4b288" - integrity sha512-qktIdFdGS6dpDnOGnImrOA9GpNMsVaGAycGcvoqoUYEkPf8dFCLKthEOzqA1fU01wKn3r1M5mi1eluM1ld5Hng== +"@swc/core-win32-x64-msvc@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.205.tgz#626b979203510c43c7f5a8014881a2c08426bf33" + integrity sha512-RRSkyAol0c7sU9gejtrpF8TLmdYdBjLutcmQHtLKbWTm74ZLidZpF28G0J2tD7HNmzQnMpLzyoT1jW9JgLwzVg== -"@swc/core@^1.2.239": - version "1.2.239" - resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.239.tgz#4a28f9962f5e7ae1094368243c52168d36258eef" - integrity sha512-U3tbnOBykfLGIJRQ+bSxVsgyTPQ5l9zTe2YQq3GULnxe6rfsgEYN54Uelp9vr3w7LXfW0k+bteXS6YGLpmnEfw== +"@swc/core@1.2.205": + version "1.2.205" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.205.tgz#b786644c1752bc9206bcd30b05a4f365ef60eed3" + integrity sha512-evq0/tFyYdYgOhKb//+G93fxe9zwFxtme7NL7wSiEF8+4/ON4Y5AI9eHLoqddXqs3W8Y0HQi+rJmlrkCibrseA== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.239" - "@swc/core-android-arm64" "1.2.239" - "@swc/core-darwin-arm64" "1.2.239" - "@swc/core-darwin-x64" "1.2.239" - "@swc/core-freebsd-x64" "1.2.239" - "@swc/core-linux-arm-gnueabihf" "1.2.239" - "@swc/core-linux-arm64-gnu" "1.2.239" - "@swc/core-linux-arm64-musl" "1.2.239" - "@swc/core-linux-x64-gnu" "1.2.239" - "@swc/core-linux-x64-musl" "1.2.239" - "@swc/core-win32-arm64-msvc" "1.2.239" - "@swc/core-win32-ia32-msvc" "1.2.239" - "@swc/core-win32-x64-msvc" "1.2.239" + "@swc/core-android-arm-eabi" "1.2.205" + "@swc/core-android-arm64" "1.2.205" + "@swc/core-darwin-arm64" "1.2.205" + "@swc/core-darwin-x64" "1.2.205" + "@swc/core-freebsd-x64" "1.2.205" + "@swc/core-linux-arm-gnueabihf" "1.2.205" + "@swc/core-linux-arm64-gnu" "1.2.205" + "@swc/core-linux-arm64-musl" "1.2.205" + "@swc/core-linux-x64-gnu" "1.2.205" + "@swc/core-linux-x64-musl" "1.2.205" + "@swc/core-win32-arm64-msvc" "1.2.205" + "@swc/core-win32-ia32-msvc" "1.2.205" + "@swc/core-win32-x64-msvc" "1.2.205" "@swc/jest@^0.2.22": version "0.2.22" @@ -6343,16 +6331,6 @@ dependencies: "@jest/create-cache-key-function" "^27.4.2" -"@swc/wasm@1.2.122": - version "1.2.122" - resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.122.tgz#87a5e654b26a71b2e84b801f41e45f823b856639" - integrity sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ== - -"@swc/wasm@1.2.130": - version "1.2.130" - resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" - integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== - "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -24612,7 +24590,7 @@ subscriptions-transport-ws@^0.11.0: symbol-observable "^1.0.4" ws "^5.2.0 || ^6.0.0 || ^7.0.0" -sucrase@^3.18.0: +sucrase@^3.18.0, sucrase@^3.20.2: version "3.25.0" resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.25.0.tgz#6dffa34e614b3347877507a4380cc4f022b7b7aa" integrity sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ== From 978eaf9bfa9d9eac86d06d3d07d89718d219e08b Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 17:21:52 +0200 Subject: [PATCH 252/275] chore: updating some changeset and api-reports Signed-off-by: blam --- .changeset/nervous-rivers-sneeze.md | 24 +++++++++++++++++-- packages/backend-common/api-report.md | 4 ++-- .../src/reading/AwsS3UrlReader.ts | 2 ++ .../AwsS3DiscoveryProcessor.test.ts | 16 ++++++------- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/.changeset/nervous-rivers-sneeze.md b/.changeset/nervous-rivers-sneeze.md index f3a5550ead..f0abb16700 100644 --- a/.changeset/nervous-rivers-sneeze.md +++ b/.changeset/nervous-rivers-sneeze.md @@ -1,6 +1,26 @@ --- -'@backstage/backend-common': patch '@backstage/cli': patch --- -Switch out `sucrase` for `swc` for transpilation +Switch out `sucrase` for `swc` for transpilation. + +Sucrase is a little more relaxed when it comes to supporting the ways of mocking in Jest. You might have to make some changes to your tests to meet the Jest standard and spec if your tests seems to start failing. + +Mocks that look like this are invalid, and they will throw a reference error in line with the Jest documentation [here on example 3](https://jestjs.io/docs/es6-class-mocks#calling-jestmock-with-the-module-factory-parameter) + +```ts +const mockCommandExists = jest.fn(); +jest.mock('command-exists', () => mockCommandExists); +``` + +You might need to update these mocks to look a little like the following to defer the call to the `jest.fn()` spy until the mock is called. + +```ts +const mockCommandExists = jest.fn(); +jest.mock( + 'command-exists', + () => + (...args: any[]) => + commandExists(...args), +); +``` diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 8362c3ab2f..af62238925 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -8,6 +8,7 @@ import { AbortController as AbortController_2 } from 'node-abort-controller'; import { AbortSignal as AbortSignal_2 } from 'node-abort-controller'; +import aws from 'aws-sdk'; import { AwsS3Integration } from '@backstage/integration'; import { AzureIntegration } from '@backstage/integration'; import { BitbucketCloudIntegration } from '@backstage/integration'; @@ -34,7 +35,6 @@ import { Readable } from 'stream'; import { ReadCommitResult } from 'isomorphic-git'; import { RequestHandler } from 'express'; import { Router } from 'express'; -import { S3 } from 'aws-sdk'; import { Server } from 'http'; import * as winston from 'winston'; import { Writable } from 'stream'; @@ -44,7 +44,7 @@ export class AwsS3UrlReader implements UrlReader { constructor( integration: AwsS3Integration, deps: { - s3: S3; + s3: aws.S3; treeResponseFactory: ReadTreeResponseFactory; }, ); diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index 5d471dfae7..b9fc58ef5c 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -14,6 +14,8 @@ * limitations under the License. */ +// note: We do the import like this so that we don't get issues destructuring +// and it not being mocked by the aws-sdk-mock package which is unfortunate. import aws from 'aws-sdk'; import { CredentialsOptions } from 'aws-sdk/lib/credentials'; import { diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts index 49dc70ae5e..6aab7b2bec 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts @@ -13,9 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import mockAws from 'aws-sdk-mock'; -import aws from 'aws-sdk'; -import path from 'path'; + import { getVoidLogger, UrlReaders } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { AwsS3DiscoveryProcessor } from './AwsS3DiscoveryProcessor'; @@ -24,8 +22,12 @@ import { CatalogProcessorResult, processingResult, } from '@backstage/plugin-catalog-backend'; +import AWSMock from 'aws-sdk-mock'; +import aws from 'aws-sdk'; +import path from 'path'; import YAML from 'yaml'; +AWSMock.setSDKInstance(aws); const object: aws.S3.Types.Object = { Key: 'awsS3-mock-object.txt', }; @@ -33,11 +35,8 @@ const objectList: aws.S3.ObjectList = [object]; const output: aws.S3.Types.ListObjectsV2Output = { Contents: objectList, }; - -mockAws.setSDKInstance(require('aws-sdk')); - -mockAws.mock('S3', 'listObjectsV2', output); -mockAws.mock( +AWSMock.mock('S3', 'listObjectsV2', output); +AWSMock.mock( 'S3', 'getObject', Buffer.from( @@ -76,7 +75,6 @@ describe('readLocation', () => { }, ), )) as CatalogProcessorEntityResult; - console.log(generated); expect(generated.type).toBe('entity'); expect(generated.location).toEqual({ target: 'awsS3-mock-object.txt', From 399286d7dda2dfc187471ec0d99b079dcf90a9f0 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 19 Aug 2022 17:26:16 +0200 Subject: [PATCH 253/275] chore: updating changeset for backend-common Signed-off-by: blam --- .changeset/beige-monkeys-add.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/beige-monkeys-add.md diff --git a/.changeset/beige-monkeys-add.md b/.changeset/beige-monkeys-add.md new file mode 100644 index 0000000000..ee54e4d090 --- /dev/null +++ b/.changeset/beige-monkeys-add.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Workaround support for `swc` instead of `sucrase` From 4c85095c1fc6cb6b74d76af516c8cba4b19d0204 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 11:29:53 +0200 Subject: [PATCH 254/275] chore: revert the rails whitespace change Signed-off-by: blam --- .../src/actions/fetch/rails/railsNewRunner.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts index caebc36779..0ed02e293c 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts @@ -57,6 +57,7 @@ export class RailsNewRunner { const baseCommand = 'rails'; const baseArguments = ['new']; const commandExistsToRun = await commandExists(baseCommand); + if (commandExistsToRun) { const arrayExtraArguments = railsArgumentResolver( workspacePath, From 4f7c799c6dca61f5a9ba033d657881db5033bbf6 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 11:40:14 +0200 Subject: [PATCH 255/275] Added some more notes to the changeset Signed-off-by: blam --- .changeset/nervous-rivers-sneeze.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.changeset/nervous-rivers-sneeze.md b/.changeset/nervous-rivers-sneeze.md index f0abb16700..e190a8bc47 100644 --- a/.changeset/nervous-rivers-sneeze.md +++ b/.changeset/nervous-rivers-sneeze.md @@ -24,3 +24,17 @@ jest.mock( commandExists(...args), ); ``` + +You can also remove any occurences of `hot(App)` and any import of `react-hot-loader` if you're using the that package locally, as all this has now been replaced with [React Refresh](https://www.npmjs.com/package/react-refresh) which you will get out of the box with the new CLI. + +**Note** If you're experiencing difficulties with running tests after the migration, please reach out to us on Discord to see if we can help, or raise an issue. But in the meantime you can switch back to the existing behaviour by using the following config in your root `package.json`. + +```json +"jest": { + "transform": { + "\\.(js|jsx|ts|tsx|mjs|cjs)$": "@backstage/cli/config/jestSucraseTransform.js", + "\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$": "@backstage/cli/config/jestFileTransform.js", + "\\.(yaml)$": "jest-transform-yaml" + } +} +``` From 0f0a56a9107e373edd650a415ced76d94a293944 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 11:50:19 +0200 Subject: [PATCH 256/275] chore: fix spelling Signed-off-by: blam --- .changeset/nervous-rivers-sneeze.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/nervous-rivers-sneeze.md b/.changeset/nervous-rivers-sneeze.md index e190a8bc47..f146a37030 100644 --- a/.changeset/nervous-rivers-sneeze.md +++ b/.changeset/nervous-rivers-sneeze.md @@ -25,7 +25,7 @@ jest.mock( ); ``` -You can also remove any occurences of `hot(App)` and any import of `react-hot-loader` if you're using the that package locally, as all this has now been replaced with [React Refresh](https://www.npmjs.com/package/react-refresh) which you will get out of the box with the new CLI. +You can also remove any occurrence of `hot(App)` and any import of `react-hot-loader` if you're using the that package locally, as all this has now been replaced with [React Refresh](https://www.npmjs.com/package/react-refresh) which you will get out of the box with the new CLI. **Note** If you're experiencing difficulties with running tests after the migration, please reach out to us on Discord to see if we can help, or raise an issue. But in the meantime you can switch back to the existing behaviour by using the following config in your root `package.json`. From 021980ef88f824ea0ae9258ae50c0ebda7e22934 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 12:58:48 +0200 Subject: [PATCH 257/275] chore: remove react-hot-loader from devutils Signed-off-by: blam --- packages/dev-utils/package.json | 1 - packages/dev-utils/src/devApp/render.tsx | 8 +------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 07c51dc8ae..9639ffd8fc 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -48,7 +48,6 @@ "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "react-use": "^17.2.4", - "react-hot-loader": "^4.13.0", "react-router": "6.0.0-beta.0", "react-router-dom": "6.0.0-beta.0", "zen-observable": "^0.8.15" diff --git a/packages/dev-utils/src/devApp/render.tsx b/packages/dev-utils/src/devApp/render.tsx index 9f9fcd8ca6..5cd77528a4 100644 --- a/packages/dev-utils/src/devApp/render.tsx +++ b/packages/dev-utils/src/devApp/render.tsx @@ -46,7 +46,6 @@ import { Box } from '@material-ui/core'; import BookmarkIcon from '@material-ui/icons/Bookmark'; import React, { ComponentType, ReactNode } from 'react'; import ReactDOM from 'react-dom'; -import { hot } from 'react-hot-loader'; import { Route } from 'react-router'; import { SidebarThemeSwitcher } from './SidebarThemeSwitcher'; @@ -224,12 +223,7 @@ export class DevAppBuilder { * Build and render directory to #root element, with react hot loading. */ render(): void { - const hotModule = - require.cache['./dev/index.tsx'] ?? - require.cache['./dev/index.ts'] ?? - module; - - const DevApp = hot(hotModule)(this.build()); + const DevApp = this.build(); if ( window.location.pathname === '/' && From 5ed57a9a107b9d6b68e1b0003b20b54956bf7ecd Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 13:20:49 +0200 Subject: [PATCH 258/275] chore: reworking the dependencies Signed-off-by: blam --- packages/cli/package.json | 8 +++---- packages/cli/src/lib/bundler/config.ts | 2 +- packages/cli/src/lib/bundler/transforms.ts | 6 +++++- yarn.lock | 25 ++++++++-------------- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 0719b1511a..ddd0ff77a0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,12 +49,13 @@ "@spotify/eslint-config-typescript": "^14.0.0", "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", - "@swc/core": "1.2.205", - "@swc/jest": "^0.2.22", "@svgr/plugin-jsx": "6.3.x", "@svgr/plugin-svgo": "6.3.x", "@svgr/rollup": "6.3.x", "@svgr/webpack": "6.3.x", + "@swc/core": "1.2.205", + "@swc/helpers": "^0.4.7", + "@swc/jest": "^0.2.22", "@types/webpack-env": "^1.15.2", "@typescript-eslint/eslint-plugin": "^5.9.0", "@typescript-eslint/parser": "^5.9.0", @@ -70,7 +71,6 @@ "esbuild": "^0.14.10", "esbuild-loader": "^2.18.0", "eslint": "^8.6.0", - "sucrase": "^3.20.2", "eslint-config-prettier": "^8.3.0", "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-deprecation": "^1.3.2", @@ -104,7 +104,6 @@ "postcss": "^8.1.0", "process": "^0.11.10", "react-dev-utils": "^12.0.0-next.60", - "react-hot-loader": "^4.13.0", "react-refresh": "^0.14.0", "recursive-readdir": "^2.2.2", "replace-in-file": "^6.0.0", @@ -116,6 +115,7 @@ "run-script-webpack-plugin": "^0.1.0", "semver": "^7.3.2", "style-loader": "^3.3.1", + "sucrase": "^3.20.2", "swc-loader": "^0.2.3", "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index f98d72b02b..2aac38732d 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -157,7 +157,7 @@ export async function createConfig( }, devtool: isDev ? 'eval-cheap-module-source-map' : 'source-map', context: paths.targetPath, - entry: [require.resolve('react-hot-loader/patch'), paths.targetEntry], + entry: [paths.targetEntry], resolve: { extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json', '.wasm'], mainFields: ['browser', 'module', 'main'], diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index 9c3efd77a5..d1cf0e67b8 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -30,7 +30,7 @@ type TransformOptions = { }; export const transforms = (options: TransformOptions): Transforms => { - const { isDev } = options; + const { isDev, isBackend } = options; // This ensures that styles inserted from the style-loader and any // async style chunks are always given lower priority than JSS styles. @@ -58,6 +58,8 @@ export const transforms = (options: TransformOptions): Transforms => { loader: 'swc-loader', options: { jsc: { + target: 'es2019', + externalHelpers: !isBackend, parser: { syntax: 'typescript', tsx: true, @@ -82,6 +84,8 @@ export const transforms = (options: TransformOptions): Transforms => { loader: 'swc-loader', options: { jsc: { + target: 'es2019', + externalHelpers: !isBackend, parser: { syntax: 'ecmascript', jsx: true, diff --git a/yarn.lock b/yarn.lock index 9d580b537d..362d5f6e74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6324,6 +6324,13 @@ "@swc/core-win32-ia32-msvc" "1.2.205" "@swc/core-win32-x64-msvc" "1.2.205" +"@swc/helpers@^0.4.7": + version "0.4.7" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.7.tgz#25a32e462e799a5a102eb9c241f73bbc4cb806a7" + integrity sha512-jJKr/2JOivCQxb5Xpli3asedRLH34QgJ3G+7gm6CoCOwt/LDDX9g67OuxvjFOiYZfngWYB66ZbjU6cUNtQdavg== + dependencies: + tslib "^2.4.0" + "@swc/jest@^0.2.22": version "0.2.22" resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" @@ -14455,7 +14462,7 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -global@^4.3.0, global@~4.4.0: +global@~4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== @@ -21581,7 +21588,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -22076,20 +22083,6 @@ react-hook-form@^7.12.2, react-hook-form@^7.13.0: resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.32.2.tgz#58ec2ab0239ce97969baa2faa03ced13fae913ac" integrity sha512-F1A6n762xaRhvtQH5SkQQhMr19cCkHZYesTcKJJeNmrphiZp/cYFTIzC05FnQry0SspM54oPJ9tXFXlzya8VNQ== -react-hot-loader@^4.13.0: - version "4.13.0" - resolved "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202" - integrity sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA== - dependencies: - fast-levenshtein "^2.0.6" - global "^4.3.0" - hoist-non-react-statics "^3.3.0" - loader-utils "^1.1.0" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - source-map "^0.7.3" - react-icons@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/react-icons/-/react-icons-4.4.0.tgz#a13a8a20c254854e1ec9aecef28a95cdf24ef703" From d0d02b3eb8067734dc6f89fc1e7c5811635f0cb5 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 22 Aug 2022 13:41:49 +0200 Subject: [PATCH 259/275] chore: target for the esbuild loader Signed-off-by: blam --- packages/cli/src/lib/bundler/transforms.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index d1cf0e67b8..4b34c4efe9 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -115,7 +115,7 @@ export const transforms = (options: TransformOptions): Transforms => { loader: require.resolve('esbuild-loader'), options: { loader: 'jsx', - target: 'es2015', + target: 'es2019', }, }, { From 4c5e85ddf3b069f457632387ed34a3d3331ddc1f Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 23 Aug 2022 09:45:28 +0200 Subject: [PATCH 260/275] chore: add changeset Signed-off-by: blam --- .changeset/rotten-books-crash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rotten-books-crash.md diff --git a/.changeset/rotten-books-crash.md b/.changeset/rotten-books-crash.md new file mode 100644 index 0000000000..f2ed45021d --- /dev/null +++ b/.changeset/rotten-books-crash.md @@ -0,0 +1,5 @@ +--- +'@backstage/dev-utils': patch +--- + +Removing dependency on `react-hot-loader`, the we ship `swc` and `React Refresh` out of the box now with the `cli` From 9b37fc59ed247539a720e8626c081c9eaf49befe Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 23 Aug 2022 10:52:49 +0200 Subject: [PATCH 261/275] chore: reworking tests Signed-off-by: blam --- packages/cli/package.json | 2 +- .../cli/src/commands/versions/bump.test.ts | 7 + .../cli/src/lib/versioning/packages.test.ts | 7 + .../DefaultAuthConnector.test.ts | 6 + .../src/providers/atlassian/provider.test.ts | 8 + .../src/providers/bitbucket/provider.test.ts | 8 + .../src/providers/github/provider.test.ts | 9 + .../src/providers/gitlab/provider.test.ts | 8 + .../src/providers/google/provider.test.ts | 8 + .../src/providers/microsoft/provider.test.ts | 6 + .../src/providers/oauth2/provider.test.ts | 8 + .../src/providers/okta/provider.test.ts | 8 + .../providers/GitHubEntityProvider.test.ts | 5 + yarn.lock | 160 ++++++++++-------- 14 files changed, 180 insertions(+), 70 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index ddd0ff77a0..992853cc1d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -53,7 +53,7 @@ "@svgr/plugin-svgo": "6.3.x", "@svgr/rollup": "6.3.x", "@svgr/webpack": "6.3.x", - "@swc/core": "1.2.205", + "@swc/core": "^1.2.205", "@swc/helpers": "^0.4.7", "@swc/jest": "^0.2.22", "@types/webpack-env": "^1.15.2", diff --git a/packages/cli/src/commands/versions/bump.test.ts b/packages/cli/src/commands/versions/bump.test.ts index e7b3c858aa..cdbf6779a4 100644 --- a/packages/cli/src/commands/versions/bump.test.ts +++ b/packages/cli/src/commands/versions/bump.test.ts @@ -51,6 +51,13 @@ jest.mock('ora', () => ({ }, })); +jest.mock('../../lib/run', () => { + return { + run: jest.fn(), + runPlain: jest.fn(), + }; +}); + const REGISTRY_VERSIONS: { [name: string]: string } = { '@backstage/core': '1.0.6', '@backstage/core-api': '1.0.7', diff --git a/packages/cli/src/lib/versioning/packages.test.ts b/packages/cli/src/lib/versioning/packages.test.ts index 1d6d3a4c40..975be74abd 100644 --- a/packages/cli/src/lib/versioning/packages.test.ts +++ b/packages/cli/src/lib/versioning/packages.test.ts @@ -20,6 +20,13 @@ import * as runObj from '../run'; import { fetchPackageInfo, mapDependencies } from './packages'; import { NotFoundError } from '../errors'; +jest.mock('../run', () => { + return { + run: jest.fn(), + runPlain: jest.fn(), + }; +}); + describe('fetchPackageInfo', () => { afterEach(() => { jest.resetAllMocks(); diff --git a/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts b/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts index baf89a59d8..1a0a53347f 100644 --- a/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts +++ b/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts @@ -22,6 +22,12 @@ import { setupRequestMockHandlers } from '@backstage/test-utils'; import { setupServer } from 'msw/node'; import { rest } from 'msw'; +jest.mock('../loginPopup', () => { + return { + showLoginPopup: jest.fn(), + }; +}); + const defaultOptions = { discoveryApi: UrlPatternDiscovery.compile('http://my-host/api/{{pluginId}}'), environment: 'production', diff --git a/plugins/auth-backend/src/providers/atlassian/provider.test.ts b/plugins/auth-backend/src/providers/atlassian/provider.test.ts index c41a18aa22..1fb987d3b0 100644 --- a/plugins/auth-backend/src/providers/atlassian/provider.test.ts +++ b/plugins/auth-backend/src/providers/atlassian/provider.test.ts @@ -20,6 +20,14 @@ import { OAuthResult } from '../../lib/oauth'; import { PassportProfile } from '../../lib/passport/types'; import { AuthResolverContext } from '../types'; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + executeFrameHandlerStrategy: jest.fn(), + executeRefreshTokenStrategy: jest.fn(), + executeFetchUserProfileStrategy: jest.fn(), + }; +}); + const mockFrameHandler = jest.spyOn( helpers, 'executeFrameHandlerStrategy', diff --git a/plugins/auth-backend/src/providers/bitbucket/provider.test.ts b/plugins/auth-backend/src/providers/bitbucket/provider.test.ts index 9eeedc3d7b..503eccffbd 100644 --- a/plugins/auth-backend/src/providers/bitbucket/provider.test.ts +++ b/plugins/auth-backend/src/providers/bitbucket/provider.test.ts @@ -25,6 +25,14 @@ const mockFrameHandler = jest.spyOn( () => Promise<{ result: BitbucketOAuthResult; privateInfo: any }> >; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + executeFrameHandlerStrategy: jest.fn(), + executeRefreshTokenStrategy: jest.fn(), + executeFetchUserProfileStrategy: jest.fn(), + }; +}); + describe('createBitbucketProvider', () => { it('should auth', async () => { const provider = new BitbucketAuthProvider({ diff --git a/plugins/auth-backend/src/providers/github/provider.test.ts b/plugins/auth-backend/src/providers/github/provider.test.ts index 18690a986b..ff750223d3 100644 --- a/plugins/auth-backend/src/providers/github/provider.test.ts +++ b/plugins/auth-backend/src/providers/github/provider.test.ts @@ -21,6 +21,15 @@ import { makeProfileInfo } from '../../lib/passport/PassportStrategyHelper'; import { OAuthStartRequest, encodeState } from '../../lib/oauth'; import { AuthResolverContext } from '../types'; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + ...jest.requireActual('../../lib/passport/PassportStrategyHelper'), + executeFrameHandlerStrategy: jest.fn(), + executeRefreshTokenStrategy: jest.fn(), + executeFetchUserProfileStrategy: jest.fn(), + }; +}); + const mockFrameHandler = jest.spyOn( helpers, 'executeFrameHandlerStrategy', diff --git a/plugins/auth-backend/src/providers/gitlab/provider.test.ts b/plugins/auth-backend/src/providers/gitlab/provider.test.ts index 169930786b..f9e1442661 100644 --- a/plugins/auth-backend/src/providers/gitlab/provider.test.ts +++ b/plugins/auth-backend/src/providers/gitlab/provider.test.ts @@ -23,6 +23,14 @@ import { PassportProfile } from '../../lib/passport/types'; import { OAuthResult } from '../../lib/oauth'; import { AuthResolverContext } from '../types'; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + executeFrameHandlerStrategy: jest.fn(), + executeRefreshTokenStrategy: jest.fn(), + executeFetchUserProfileStrategy: jest.fn(), + }; +}); + const mockFrameHandler = jest.spyOn( helpers, 'executeFrameHandlerStrategy', diff --git a/plugins/auth-backend/src/providers/google/provider.test.ts b/plugins/auth-backend/src/providers/google/provider.test.ts index 2e904c62ad..3c0b367be2 100644 --- a/plugins/auth-backend/src/providers/google/provider.test.ts +++ b/plugins/auth-backend/src/providers/google/provider.test.ts @@ -19,6 +19,14 @@ import * as helpers from '../../lib/passport/PassportStrategyHelper'; import { OAuthResult } from '../../lib/oauth'; import { AuthResolverContext } from '../types'; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + executeFrameHandlerStrategy: jest.fn(), + executeRefreshTokenStrategy: jest.fn(), + executeFetchUserProfileStrategy: jest.fn(), + }; +}); + const mockFrameHandler = jest.spyOn( helpers, 'executeFrameHandlerStrategy', diff --git a/plugins/auth-backend/src/providers/microsoft/provider.test.ts b/plugins/auth-backend/src/providers/microsoft/provider.test.ts index e9b4424a95..e4e919004c 100644 --- a/plugins/auth-backend/src/providers/microsoft/provider.test.ts +++ b/plugins/auth-backend/src/providers/microsoft/provider.test.ts @@ -23,6 +23,12 @@ import { rest } from 'msw'; import { setupServer } from 'msw/node'; import { AuthResolverContext } from '../types'; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + executeFrameHandlerStrategy: jest.fn(), + }; +}); + const mockFrameHandler = jest.spyOn( helpers, 'executeFrameHandlerStrategy', diff --git a/plugins/auth-backend/src/providers/oauth2/provider.test.ts b/plugins/auth-backend/src/providers/oauth2/provider.test.ts index 23e08dd729..9bdf7095f3 100644 --- a/plugins/auth-backend/src/providers/oauth2/provider.test.ts +++ b/plugins/auth-backend/src/providers/oauth2/provider.test.ts @@ -19,6 +19,14 @@ import * as helpers from '../../lib/passport/PassportStrategyHelper'; import { OAuthResult } from '../../lib/oauth'; import { AuthResolverContext } from '../types'; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + executeFrameHandlerStrategy: jest.fn(), + executeRefreshTokenStrategy: jest.fn(), + executeFetchUserProfileStrategy: jest.fn(), + }; +}); + const mockFrameHandler = jest.spyOn( helpers, 'executeFrameHandlerStrategy', diff --git a/plugins/auth-backend/src/providers/okta/provider.test.ts b/plugins/auth-backend/src/providers/okta/provider.test.ts index 468c4cdcc8..bc27129300 100644 --- a/plugins/auth-backend/src/providers/okta/provider.test.ts +++ b/plugins/auth-backend/src/providers/okta/provider.test.ts @@ -19,6 +19,14 @@ import * as helpers from '../../lib/passport/PassportStrategyHelper'; import { OAuthResult } from '../../lib/oauth'; import { AuthResolverContext } from '../types'; +jest.mock('../../lib/passport/PassportStrategyHelper', () => { + return { + executeFrameHandlerStrategy: jest.fn(), + executeRefreshTokenStrategy: jest.fn(), + executeFetchUserProfileStrategy: jest.fn(), + }; +}); + const mockFrameHandler = jest.spyOn( helpers, 'executeFrameHandlerStrategy', diff --git a/plugins/catalog-backend-module-github/src/providers/GitHubEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GitHubEntityProvider.test.ts index a40ab4eb5c..5cc464d345 100644 --- a/plugins/catalog-backend-module-github/src/providers/GitHubEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GitHubEntityProvider.test.ts @@ -21,6 +21,11 @@ import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; import { GitHubEntityProvider } from './GitHubEntityProvider'; import * as helpers from '../lib/github'; +jest.mock('../lib/github', () => { + return { + getOrganizationRepositories: jest.fn(), + }; +}); class PersistingTaskRunner implements TaskRunner { private tasks: TaskInvocationDefinition[] = []; diff --git a/yarn.lock b/yarn.lock index 362d5f6e74..de73379031 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6240,89 +6240,101 @@ "@svgr/plugin-jsx" "^6.3.1" "@svgr/plugin-svgo" "^6.3.1" -"@swc/core-android-arm-eabi@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.205.tgz#d8ca076cbfbe92f17297de0e6b2754a7ae3a8e2f" - integrity sha512-HfiuVA1JDHMSRQ8nE1DcemUgZ1PKaPwit4i7q3xin0NVbVHY1xkJyQFuLVh3VxTvGKKkF3hi8GJMVQgOXWL6kg== +"@swc/core-android-arm-eabi@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.242.tgz#3ae5d8b178a0835ae0878094175d943f2d894bec" + integrity sha512-Ukx1LQAUbPRJdREF9FMgeUwIuRtWJNpPyPF7BWl4hIkw024q75mohMbp3S2wgrF1TsSsEGW37q0DkFxPJ2uJbQ== + dependencies: + "@swc/wasm" "1.2.122" -"@swc/core-android-arm64@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.205.tgz#cb822dad076b1c30b990a2037147ae42f66bf98e" - integrity sha512-sRGZBV2dOnmh8gWWFo9HVOHdKa33zIsF8/8oYEGtq+2/s96UlAKltO2AA7HH9RaO/fT1tzBZStp+fEMUhDk/FA== +"@swc/core-android-arm64@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.242.tgz#2c1885c08dd5720991a6fa7585d39a93df98e773" + integrity sha512-4E/y+reQWHVCV/0Sn174gsLQyqIKlBWKnwUfPa7MA53VBacp8HTYoPY+iwKPrngsH16gEOC7iByiTJHR/4kirg== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-darwin-arm64@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.205.tgz#1a3340e21459cdeea2224057ddf031a330782424" - integrity sha512-JwVDfKS7vp7zzOQXWNwwcF41h4r3DWEpK6DQjz18WJyS1VVOcpVQGyuE7kSPjcnG01ZxBL9JPwwT353i/8IwDg== +"@swc/core-darwin-arm64@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.242.tgz#1b8b16a132cc354ea3b31d26c46908dae2fe41ed" + integrity sha512-nIqtjxdbz0Fe0gFZwCygBwUrGEXj3c4mjHjNeveidVX/6U0HE/EAj+0iXuw8zjJLof8HCMnxq8CzzvhA6gd3ZA== -"@swc/core-darwin-x64@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.205.tgz#7a6552acd42482ecb84b1c90c0defad408ac81cc" - integrity sha512-malz2I+w6xFF1QyTmPGt0Y0NEMbUcrvfr5gUfZDGjxMhPPlS7k6fXucuZxVr9VVaM+JGq1SidVODmZ84jb1qHg== +"@swc/core-darwin-x64@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.242.tgz#cde041d520fcfb0865f49b395bb2c76af8ec3f3a" + integrity sha512-iZKzI76vYYHD/t8wkQ/uIVuIyxN1eift2nLvUU7/jtmoa6b8DH/45ykB/C3vkuvYVNMiGA8HIjJIzw7RJz5XIQ== -"@swc/core-freebsd-x64@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.205.tgz#d58f48d5de9a2babd609802338bd8e8934fec39a" - integrity sha512-/nZrG1z0T7h97AsOb/wOtYlnh4WEuNppv3XKQIMPj32YNQdMBVgpybVTVRIs1GQGZMd1/7jAy5BVQcwQjUbrLg== +"@swc/core-freebsd-x64@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.242.tgz#a95827311424dd86190fdb73bec996d24188c6d3" + integrity sha512-6JNi5/6JDvcTQzBkndELiIlJufWowoI2ZEmXlGIJpiGoj28PEDPwy5LO7KkXa4DnY5L4CSh15idFO/DxV0rGAQ== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-linux-arm-gnueabihf@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.205.tgz#33f7f639ab64dc8c9229a2e63fc025db50905345" - integrity sha512-mTA3vETMdBmpecUyI9waZYsp7FABhew4e81psspmFpDyfty0SLISWZDnvPAn0pSnb2fWhzKwDC5kdXHKUmLJuA== +"@swc/core-linux-arm-gnueabihf@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.242.tgz#1b0bd0ba96c59a9c4b87668521ce8ba55c8c7f55" + integrity sha512-NGL9A3cv8PCbeQ1SvPfApNlHvFbf7Jn305sCAy3iZYsmwm+EU4JNlOWXGgRioP7ABhz2kwLhfYs8UMYCDIVq8Q== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-linux-arm64-gnu@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.205.tgz#ab3aef46cb3792368cfdb1ff1fa9af4df0664e17" - integrity sha512-qGzFGryeQE+O5SFK7Nn2ESqCEnv00rnzhf11WZF9V71EZ15amIhmbcwHqvFpoRSDw8hZnqoGqfPRfoJbouptnA== +"@swc/core-linux-arm64-gnu@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.242.tgz#f97c1b655779788fff9a035f6a80180b1545423b" + integrity sha512-OJ0kAjgeoRDJlo6Rvd2GnJ92tiIndmC/8krD9gfnQEyAgpR+jajOxbKhyBN/QZPyD2q/TG2LPqxhGYZ79q5mWQ== -"@swc/core-linux-arm64-musl@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.205.tgz#20e79f0a3cfbe0d803ad256fd422ee17b52e3464" - integrity sha512-uLJoX9L/4Xg3sLMjAbIhzbTe5gD/MBA8VETBeEkLtgb7a0ys1kvn9xQ6qLw6A71amEPlI+VABnoTRdUEaBSV9Q== +"@swc/core-linux-arm64-musl@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.242.tgz#ad77a5c7fc79d42d64970ca1886eb9d626388ca2" + integrity sha512-VqnHSYb1a6xW5ARUx9kq88s1S3XvCw9TvQXsPcN4e5qsugrLzxWLnqIM6VnWW06prxN7pYlWo9QtrtdPfbppmA== -"@swc/core-linux-x64-gnu@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.205.tgz#7e698ca21854a038f973ed5cb2d195ae00b0707a" - integrity sha512-gQsjcYlkWKP1kceQIsoHGrOrG7ygW3ojNsSnYoZ5DG5PipRA4eeUfO9YIfrmoa29LiVNjmRPfUJa8O1UHDG5ew== +"@swc/core-linux-x64-gnu@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.242.tgz#4c7f2c483876a4b0755a263133c25413fa69df88" + integrity sha512-DDqVJh0KpgHb+E0563+6PqAYDzYTSwgZXF/fOULwlHC7Yt50a9+ecisTFSHkWc74zPMtq27kMTuZyyLeD3gu7A== -"@swc/core-linux-x64-musl@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.205.tgz#e9aeb2bdf4aad466d1250d67aade0984cd6c4812" - integrity sha512-LR5ukqBltQc++2eX3qEj/H8KtOt0V3CmtgXNOiNCUxvPDT8mYz/8MJhYOrofonND0RKfXyyPW7dRxg62ceTLSQ== +"@swc/core-linux-x64-musl@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.242.tgz#48f8769094cfde9d78dc32936666575470583b2a" + integrity sha512-P+9sWgd5eZ6kS1WxOJbCeSgWY7mLP742PhwAzpFrJqCq5nx8Q4FYo4L5mOVNAheYDWldsxR1nKXR1RIMK3S2Lw== -"@swc/core-win32-arm64-msvc@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.205.tgz#c46bf0adc703d199fd1eeef4a811913cb0e74164" - integrity sha512-NjcLWm4mOy78LAEt7pqFl+SLcCyqnSlUP729XRd1uRvKwt1Cwch5SQRdoaFqwf1DaEQy4H4iuGPynkfarlb1kQ== +"@swc/core-win32-arm64-msvc@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.242.tgz#e421a5a7a49d1effa71a22fea22a65256b447108" + integrity sha512-W5cevrf5aDJzdE++XeQi1BJKuigC3dlG2NaBUyt3inmep7nli6eoBJdj9Vyg5EPfFOdeI6wQiwOpFvQRoAle8Q== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-win32-ia32-msvc@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.205.tgz#f1aa4a72670c6367282e39f81052d51287b23497" - integrity sha512-+6byrRxIXgZ0zmLL6ZeX1HBBrAqvCy8MR5Yz0SO26jR8OPZXJCgZXL9BTsZO+YEG4f32ZOlZh3nnHCl6Dcb4GA== +"@swc/core-win32-ia32-msvc@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.242.tgz#1b836f5872195fef506a094eae7734b5fd28a1b5" + integrity sha512-XRQcgChvY9333hBre9F53EbiVfVu5MkSH4+XIiNMK14Jg8EqQ1nOcd+jvv2sEdEVbufCmBbWNjofUrCoQey60w== + dependencies: + "@swc/wasm" "1.2.130" -"@swc/core-win32-x64-msvc@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.205.tgz#626b979203510c43c7f5a8014881a2c08426bf33" - integrity sha512-RRSkyAol0c7sU9gejtrpF8TLmdYdBjLutcmQHtLKbWTm74ZLidZpF28G0J2tD7HNmzQnMpLzyoT1jW9JgLwzVg== +"@swc/core-win32-x64-msvc@1.2.242": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.242.tgz#61a6c7d4da1dec1188b912785bd8e0bb16ff8440" + integrity sha512-Cz1hZOxcfEVgzEr2sYIW9MxT+wEEbYz7aB87ZDmTUpr7vuvBiLMwsYItm8qG847wZeJfa+J7CC+tty5GJOBOOQ== -"@swc/core@1.2.205": - version "1.2.205" - resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.205.tgz#b786644c1752bc9206bcd30b05a4f365ef60eed3" - integrity sha512-evq0/tFyYdYgOhKb//+G93fxe9zwFxtme7NL7wSiEF8+4/ON4Y5AI9eHLoqddXqs3W8Y0HQi+rJmlrkCibrseA== +"@swc/core@^1.2.205": + version "1.2.242" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.242.tgz#4392ef0012fe9667440c6eb5a419b6cc86a0a786" + integrity sha512-JQqSYVoLtHtztCNBgeCKyxmqw6AksHsC4WvVSSErLXJx6JXKaog1HFVuzd6rwx2lLCV+zBnbqJFug5OX0g2knw== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.205" - "@swc/core-android-arm64" "1.2.205" - "@swc/core-darwin-arm64" "1.2.205" - "@swc/core-darwin-x64" "1.2.205" - "@swc/core-freebsd-x64" "1.2.205" - "@swc/core-linux-arm-gnueabihf" "1.2.205" - "@swc/core-linux-arm64-gnu" "1.2.205" - "@swc/core-linux-arm64-musl" "1.2.205" - "@swc/core-linux-x64-gnu" "1.2.205" - "@swc/core-linux-x64-musl" "1.2.205" - "@swc/core-win32-arm64-msvc" "1.2.205" - "@swc/core-win32-ia32-msvc" "1.2.205" - "@swc/core-win32-x64-msvc" "1.2.205" + "@swc/core-android-arm-eabi" "1.2.242" + "@swc/core-android-arm64" "1.2.242" + "@swc/core-darwin-arm64" "1.2.242" + "@swc/core-darwin-x64" "1.2.242" + "@swc/core-freebsd-x64" "1.2.242" + "@swc/core-linux-arm-gnueabihf" "1.2.242" + "@swc/core-linux-arm64-gnu" "1.2.242" + "@swc/core-linux-arm64-musl" "1.2.242" + "@swc/core-linux-x64-gnu" "1.2.242" + "@swc/core-linux-x64-musl" "1.2.242" + "@swc/core-win32-arm64-msvc" "1.2.242" + "@swc/core-win32-ia32-msvc" "1.2.242" + "@swc/core-win32-x64-msvc" "1.2.242" "@swc/helpers@^0.4.7": version "0.4.7" @@ -6338,6 +6350,16 @@ dependencies: "@jest/create-cache-key-function" "^27.4.2" +"@swc/wasm@1.2.122": + version "1.2.122" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.122.tgz#87a5e654b26a71b2e84b801f41e45f823b856639" + integrity sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ== + +"@swc/wasm@1.2.130": + version "1.2.130" + resolved "https://registry.npmjs.org/@swc/wasm/-/wasm-1.2.130.tgz#88ac26433335d1f957162a9a92f1450b73c176a0" + integrity sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q== + "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" From 1ff817b3f00f32b56887efe5509a26720861239e Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 16:34:50 +0100 Subject: [PATCH 262/275] add entityMetadata to scaffolder templateInfo field Signed-off-by: Paul Cowan --- .changeset/shaggy-chicken-behave.md | 8 ++++++++ .../src/actions/fetch/cookiecutter.test.ts | 3 +++ .../src/actions/fetch/rails/index.test.ts | 3 +++ .../scaffolder/actions/builtin/fetch/template.test.ts | 3 +++ .../src/scaffolder/dryrun/createDryRunner.ts | 3 +++ .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 10 +++++++++- plugins/scaffolder-backend/src/service/router.test.ts | 2 ++ plugins/scaffolder-backend/src/service/router.ts | 1 + plugins/scaffolder-common/src/TaskSpec.ts | 6 ++++-- 9 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 .changeset/shaggy-chicken-behave.md diff --git a/.changeset/shaggy-chicken-behave.md b/.changeset/shaggy-chicken-behave.md new file mode 100644 index 0000000000..6d1700c84a --- /dev/null +++ b/.changeset/shaggy-chicken-behave.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-backend-module-cookiecutter': minor +'@backstage/plugin-scaffolder-backend-module-rails': minor +'@backstage/plugin-scaffolder-common': minor +--- + +add entityMetadata to the scaffolder templateInfo field diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index 8c501cf8f1..eb28e9bc13 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -92,6 +92,9 @@ describe('fetch:cookiecutter', () => { templateInfo: { entityRef: 'template:default/cookiecutter', baseUrl: 'somebase', + entityMetadata: { + name: 'cookiecutter', + }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts index 597847130a..50f0a9cc00 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts @@ -65,6 +65,9 @@ describe('fetch:rails', () => { templateInfo: { baseUrl: 'somebase', entityRef: 'template:default/myTemplate', + entityMetadata: { + name: 'myTemplate', + }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts index af353bef70..6941db0a30 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts @@ -78,6 +78,9 @@ describe('fetch:template', () => { templateInfo: { baseUrl: 'base-url', entityRef: 'template:default/test-template', + entityMetadata: { + name: 'test-template', + }, }, input: { url: './skeleton', diff --git a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts index f2c3c13509..1179ddb877 100644 --- a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts @@ -106,6 +106,9 @@ export function createDryRunner(options: TemplateTesterCreateOptions) { baseUrl: pathToFileURL( resolveSafeChildPath(contentsPath, 'template.yaml'), ).toString(), + entityMetadata: { + name: 'dry-run', + }, }, }, secrets: input.secrets, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 6b1701380b..4445231270 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -181,13 +181,21 @@ describe('DefaultWorkflowRunner', () => { input: { foo: 1 }, }, ], - templateInfo: { entityRef }, + templateInfo: { + entityRef, + entityMetadata: { + name: 'templateName', + }, + }, }); await runner.execute(task); expect(fakeActionHandler.mock.calls[0][0].templateInfo).toEqual({ entityRef, + entityMetadata: { + name: 'templateName', + }, }); }); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index e59f222e2d..2ea0ce1651 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -261,6 +261,7 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', + entityMetadata: mockTemplate.metadata, }, }, }), @@ -312,6 +313,7 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', + entityMetadata: mockTemplate.metadata, }, }, }), diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 1c6ea39443..7406c7633f 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -249,6 +249,7 @@ export async function createRouter( name: template.metadata?.name, }), baseUrl, + entityMetadata: template.metadata, }, }; diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 4ba43092ae..775bd5e370 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { UserEntity } from '@backstage/catalog-model'; -import { JsonValue, JsonObject } from '@backstage/types'; +import type { EntityMeta, UserEntity } from '@backstage/catalog-model'; +import type { JsonValue, JsonObject } from '@backstage/types'; /** * Information about a template that is stored on a task specification. @@ -32,6 +32,8 @@ export type TemplateInfo = { * Where the template is stored, so we can resolve relative paths for things like `fetch:template` paths. */ baseUrl?: string; + + entityMetadata: EntityMeta; }; /** From bfbccc3be9c2f7caed71c0e6e225f96e187c0de5 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 16:48:35 +0100 Subject: [PATCH 263/275] run api-report Signed-off-by: Paul Cowan --- plugins/scaffolder-common/api-report.md | 6 ++++-- plugins/scaffolder-common/src/TaskSpec.ts | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index a1c5c2bf23..ce6f8505fb 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -4,10 +4,11 @@ ```ts import { Entity } from '@backstage/catalog-model'; +import type { EntityMeta } from '@backstage/catalog-model'; import { JsonObject } from '@backstage/types'; -import { JsonValue } from '@backstage/types'; +import type { JsonValue } from '@backstage/types'; import { KindValidator } from '@backstage/catalog-model'; -import { UserEntity } from '@backstage/catalog-model'; +import type { UserEntity } from '@backstage/catalog-model'; // @public export type TaskSpec = TaskSpecV1beta3; @@ -64,5 +65,6 @@ export const templateEntityV1beta3Validator: KindValidator; export type TemplateInfo = { entityRef: string; baseUrl?: string; + entityMetadata: EntityMeta; }; ``` diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 775bd5e370..f686b2db36 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -33,6 +33,9 @@ export type TemplateInfo = { */ baseUrl?: string; + /** + * The Template entity's metadata + */ entityMetadata: EntityMeta; }; From a1c4254616e2abfa7a8d50b9cde20b438bc1d287 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 16:57:41 +0100 Subject: [PATCH 264/275] change entityMetadata doc string Signed-off-by: Paul Cowan --- plugins/scaffolder-common/src/TaskSpec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index f686b2db36..b3253be07c 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -34,7 +34,7 @@ export type TemplateInfo = { baseUrl?: string; /** - * The Template entity's metadata + * The metadata of the Template entity */ entityMetadata: EntityMeta; }; From 179b87dd2131859e149b9d31428bec4be3c937b6 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 17:14:26 +0100 Subject: [PATCH 265/275] fix reviewdog errors for changeset Signed-off-by: Paul Cowan --- .changeset/shaggy-chicken-behave.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/shaggy-chicken-behave.md b/.changeset/shaggy-chicken-behave.md index 6d1700c84a..b6cc100695 100644 --- a/.changeset/shaggy-chicken-behave.md +++ b/.changeset/shaggy-chicken-behave.md @@ -5,4 +5,4 @@ '@backstage/plugin-scaffolder-common': minor --- -add entityMetadata to the scaffolder templateInfo field +add entity metadata to the template info type From d7e83f7ccf54cfaa0913337654ea6d34c65ab97f Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 17:17:04 +0100 Subject: [PATCH 266/275] remove unreferenced packages from changeset Signed-off-by: Paul Cowan --- .changeset/shaggy-chicken-behave.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/.changeset/shaggy-chicken-behave.md b/.changeset/shaggy-chicken-behave.md index b6cc100695..41445b0930 100644 --- a/.changeset/shaggy-chicken-behave.md +++ b/.changeset/shaggy-chicken-behave.md @@ -1,7 +1,5 @@ --- '@backstage/plugin-scaffolder-backend': minor -'@backstage/plugin-scaffolder-backend-module-cookiecutter': minor -'@backstage/plugin-scaffolder-backend-module-rails': minor '@backstage/plugin-scaffolder-common': minor --- From 7b24f47bc6e0d3838ea490254338f11dbe19aab2 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Tue, 23 Aug 2022 09:53:48 +0100 Subject: [PATCH 267/275] refactor the TemplateInfo entityMetadata field to an entity object Signed-off-by: Paul Cowan --- .../src/actions/fetch/cookiecutter.test.ts | 3 --- .../src/actions/fetch/rails/index.test.ts | 3 --- .../scaffolder/actions/builtin/fetch/template.test.ts | 3 --- .../src/scaffolder/dryrun/createDryRunner.ts | 3 --- .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 10 +--------- plugins/scaffolder-backend/src/service/router.test.ts | 8 ++++++-- plugins/scaffolder-backend/src/service/router.ts | 4 +++- plugins/scaffolder-common/api-report.md | 4 +++- plugins/scaffolder-common/src/TaskSpec.ts | 9 +++++++-- 9 files changed, 20 insertions(+), 27 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index eb28e9bc13..8c501cf8f1 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -92,9 +92,6 @@ describe('fetch:cookiecutter', () => { templateInfo: { entityRef: 'template:default/cookiecutter', baseUrl: 'somebase', - entityMetadata: { - name: 'cookiecutter', - }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts index 50f0a9cc00..597847130a 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts @@ -65,9 +65,6 @@ describe('fetch:rails', () => { templateInfo: { baseUrl: 'somebase', entityRef: 'template:default/myTemplate', - entityMetadata: { - name: 'myTemplate', - }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts index 6941db0a30..af353bef70 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts @@ -78,9 +78,6 @@ describe('fetch:template', () => { templateInfo: { baseUrl: 'base-url', entityRef: 'template:default/test-template', - entityMetadata: { - name: 'test-template', - }, }, input: { url: './skeleton', diff --git a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts index 1179ddb877..f2c3c13509 100644 --- a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts @@ -106,9 +106,6 @@ export function createDryRunner(options: TemplateTesterCreateOptions) { baseUrl: pathToFileURL( resolveSafeChildPath(contentsPath, 'template.yaml'), ).toString(), - entityMetadata: { - name: 'dry-run', - }, }, }, secrets: input.secrets, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 4445231270..6b1701380b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -181,21 +181,13 @@ describe('DefaultWorkflowRunner', () => { input: { foo: 1 }, }, ], - templateInfo: { - entityRef, - entityMetadata: { - name: 'templateName', - }, - }, + templateInfo: { entityRef }, }); await runner.execute(task); expect(fakeActionHandler.mock.calls[0][0].templateInfo).toEqual({ entityRef, - entityMetadata: { - name: 'templateName', - }, }); }); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 2ea0ce1651..a062272103 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -261,7 +261,9 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', - entityMetadata: mockTemplate.metadata, + entity: { + metadata: mockTemplate.metadata, + }, }, }, }), @@ -313,7 +315,9 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', - entityMetadata: mockTemplate.metadata, + entity: { + metadata: mockTemplate.metadata, + }, }, }, }), diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 7406c7633f..3dddd85c26 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -249,7 +249,9 @@ export async function createRouter( name: template.metadata?.name, }), baseUrl, - entityMetadata: template.metadata, + entity: { + metadata: template.metadata, + }, }, }; diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index ce6f8505fb..8864c0d76d 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -65,6 +65,8 @@ export const templateEntityV1beta3Validator: KindValidator; export type TemplateInfo = { entityRef: string; baseUrl?: string; - entityMetadata: EntityMeta; + entity?: { + metadata: EntityMeta; + }; }; ``` diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index b3253be07c..1c71790736 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -34,9 +34,14 @@ export type TemplateInfo = { baseUrl?: string; /** - * The metadata of the Template entity + * the Template entity */ - entityMetadata: EntityMeta; + entity?: { + /** + * The metadata of the Template + */ + metadata: EntityMeta; + }; }; /** From c5b6fa3598bac369c29680915e2797368d2c36b7 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 23 Aug 2022 11:01:01 +0200 Subject: [PATCH 268/275] chore: updated changeset to have some info about the jest.spyOn Signed-off-by: blam --- .changeset/nervous-rivers-sneeze.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/.changeset/nervous-rivers-sneeze.md b/.changeset/nervous-rivers-sneeze.md index f146a37030..534dbb4a1a 100644 --- a/.changeset/nervous-rivers-sneeze.md +++ b/.changeset/nervous-rivers-sneeze.md @@ -4,9 +4,9 @@ Switch out `sucrase` for `swc` for transpilation. -Sucrase is a little more relaxed when it comes to supporting the ways of mocking in Jest. You might have to make some changes to your tests to meet the Jest standard and spec if your tests seems to start failing. +`sucrase` is a little more relaxed when it comes to supporting the ways of mocking in `jest`. You might have to make some changes to your tests to meet the `jest` standard and spec if your tests seems to start failing. -Mocks that look like this are invalid, and they will throw a reference error in line with the Jest documentation [here on example 3](https://jestjs.io/docs/es6-class-mocks#calling-jestmock-with-the-module-factory-parameter) +Mocks that look like this are invalid, and they will throw a reference error in line with the `jest` documentation [here on example 3](https://jestjs.io/docs/es6-class-mocks#calling-jestmock-with-the-module-factory-parameter) ```ts const mockCommandExists = jest.fn(); @@ -25,6 +25,29 @@ jest.mock( ); ``` +Also, imports are immutable. So it means that you might get some errors when trying to use `jest.spyOn` with starred imports. You might see an error like this: + +```log +TypeError: Cannot redefine property: executeFrameHandlerStrategy + at Function.defineProperty () + + 20 | import { AuthResolverContext } from '../types'; + 21 | + > 22 | const mockFrameHandler = jest.spyOn( + | ^ + 23 | helpers, + 24 | 'executeFrameHandlerStrategy', + 25 | ) as unknown as jest.MockedFunction< +``` + +This happens when you try to do `import * as something from './something'` and then `jest.spyOn(something, 'test)`. You will need to add a `jest.mock` call to mock out the required starred import to return `jest.fn()` functions from the start. Something like this fixes the above test: + +```ts +jest.mock('../../helpers', () => ({ + executeFrameHandlerStrategy: jest.fn(), +})); +``` + You can also remove any occurrence of `hot(App)` and any import of `react-hot-loader` if you're using the that package locally, as all this has now been replaced with [React Refresh](https://www.npmjs.com/package/react-refresh) which you will get out of the box with the new CLI. **Note** If you're experiencing difficulties with running tests after the migration, please reach out to us on Discord to see if we can help, or raise an issue. But in the meantime you can switch back to the existing behaviour by using the following config in your root `package.json`. From 0cbd697279f7fe3eb2b4e58d887b4c9f574adcce Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 23 Aug 2022 11:12:33 +0200 Subject: [PATCH 269/275] chore: reworking the modulescope config Signed-off-by: blam --- packages/cli/src/lib/bundler/config.ts | 39 +++++++++++++++----------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index 2aac38732d..882926d051 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -139,14 +139,24 @@ export async function createConfig( new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), ]; - if (!isDev) { - resolvePlugins.push( - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ); - } + // These files are required by the transpiled code when using React Refresh. + // They need to be excluded to the module scope plugin which ensures that files + // that exist in the package are required. + const reactRefreshFiles = [ + require.resolve( + '@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js', + ), + require.resolve('@pmmmwh/react-refresh-webpack-plugin/overlay/index.js'), + require.resolve('react-refresh'), + ]; + + resolvePlugins.push( + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson, ...reactRefreshFiles], + ), + ); + return { mode: isDev ? 'development' : 'production', profile: false, @@ -228,17 +238,12 @@ export async function createBackendConfig( const resolvePlugins: webpack.ResolvePluginInstance[] = [ new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson], + ), ]; - if (!isDev) { - resolvePlugins.push( - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ); - } - return { mode: isDev ? 'development' : 'production', profile: false, From 8d0f84620819e1966311e514f87068d2445d8bae Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 23 Aug 2022 11:18:02 +0200 Subject: [PATCH 270/275] chore: updating resolve plugins Signed-off-by: blam --- packages/cli/src/lib/bundler/config.ts | 35 +++++++++++--------------- storybook/.storybook/main.js | 1 + 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index 882926d051..0d4649fa3f 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -135,10 +135,6 @@ export async function createConfig( }), ); - const resolvePlugins: webpack.ResolvePluginInstance[] = [ - new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - ]; - // These files are required by the transpiled code when using React Refresh. // They need to be excluded to the module scope plugin which ensures that files // that exist in the package are required. @@ -150,13 +146,6 @@ export async function createConfig( require.resolve('react-refresh'), ]; - resolvePlugins.push( - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson, ...reactRefreshFiles], - ), - ); - return { mode: isDev ? 'development' : 'production', profile: false, @@ -188,7 +177,13 @@ export async function createConfig( http: false, util: require.resolve('util/'), }, - plugins: resolvePlugins, + plugins: [ + new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson, ...reactRefreshFiles], + ), + ], }, module: { rules: loaders, @@ -236,14 +231,6 @@ export async function createBackendConfig( runScriptNodeArgs.push('--inspect-brk'); } - const resolvePlugins: webpack.ResolvePluginInstance[] = [ - new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), - new ModuleScopePlugin( - [paths.targetSrc, paths.targetDev], - [paths.targetPackageJson], - ), - ]; - return { mode: isDev ? 'development' : 'production', profile: false, @@ -283,7 +270,13 @@ export async function createBackendConfig( extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'], mainFields: ['main'], modules: [paths.rootNodeModules, ...moduleDirs], - plugins: resolvePlugins, + plugins: [ + new LinkedPackageResolvePlugin(paths.rootNodeModules, externalPkgs), + new ModuleScopePlugin( + [paths.targetSrc, paths.targetDev], + [paths.targetPackageJson], + ), + ], }, module: { rules: loaders, diff --git a/storybook/.storybook/main.js b/storybook/.storybook/main.js index 95d4c80035..81466108f6 100644 --- a/storybook/.storybook/main.js +++ b/storybook/.storybook/main.js @@ -88,6 +88,7 @@ module.exports = Object.assign(({ args }) => { loader: require.resolve('swc-loader'), options: { jsc: { + target: 'es2019', parser: { syntax: 'ecmascript', jsx: true, From c916f415c0ca8a85faf4a0928692f1bc79912901 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 23 Aug 2022 11:22:35 +0200 Subject: [PATCH 271/275] chore: reworking changeset Signed-off-by: blam --- .changeset/rotten-books-crash.md | 2 +- packages/cli/package.json | 2 +- storybook/.storybook/main.js | 1 + yarn.lock | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.changeset/rotten-books-crash.md b/.changeset/rotten-books-crash.md index f2ed45021d..b0c020a743 100644 --- a/.changeset/rotten-books-crash.md +++ b/.changeset/rotten-books-crash.md @@ -2,4 +2,4 @@ '@backstage/dev-utils': patch --- -Removing dependency on `react-hot-loader`, the we ship `swc` and `React Refresh` out of the box now with the `cli` +Removed the dependency and setup of `react-hot-loader`, since the `@backstage/cli` now uses `swc` with `React Refresh` instead. diff --git a/packages/cli/package.json b/packages/cli/package.json index 992853cc1d..bf5948f843 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -53,7 +53,7 @@ "@svgr/plugin-svgo": "6.3.x", "@svgr/rollup": "6.3.x", "@svgr/webpack": "6.3.x", - "@swc/core": "^1.2.205", + "@swc/core": "^1.2.239", "@swc/helpers": "^0.4.7", "@swc/jest": "^0.2.22", "@types/webpack-env": "^1.15.2", diff --git a/storybook/.storybook/main.js b/storybook/.storybook/main.js index 81466108f6..e523b68337 100644 --- a/storybook/.storybook/main.js +++ b/storybook/.storybook/main.js @@ -69,6 +69,7 @@ module.exports = Object.assign(({ args }) => { loader: require.resolve('swc-loader'), options: { jsc: { + target: 'es2019', parser: { syntax: 'typescript', tsx: true, diff --git a/yarn.lock b/yarn.lock index de73379031..4614d4de04 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6317,7 +6317,7 @@ resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.242.tgz#61a6c7d4da1dec1188b912785bd8e0bb16ff8440" integrity sha512-Cz1hZOxcfEVgzEr2sYIW9MxT+wEEbYz7aB87ZDmTUpr7vuvBiLMwsYItm8qG847wZeJfa+J7CC+tty5GJOBOOQ== -"@swc/core@^1.2.205": +"@swc/core@^1.2.239": version "1.2.242" resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.242.tgz#4392ef0012fe9667440c6eb5a419b6cc86a0a786" integrity sha512-JQqSYVoLtHtztCNBgeCKyxmqw6AksHsC4WvVSSErLXJx6JXKaog1HFVuzd6rwx2lLCV+zBnbqJFug5OX0g2knw== From de6cf315d0df2091a6db2013669eb47a00983b3f Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 23 Aug 2022 11:44:10 +0200 Subject: [PATCH 272/275] chore: icon svg with swc Signed-off-by: blam --- packages/cli/src/lib/bundler/transforms.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index 4b34c4efe9..5fe20a0043 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -112,10 +112,17 @@ export const transforms = (options: TransformOptions): Transforms => { test: [/\.icon\.svg$/], use: [ { - loader: require.resolve('esbuild-loader'), + loader: 'swc-loader', options: { - loader: 'jsx', - target: 'es2019', + jsc: { + target: 'es2019', + externalHelpers: !isBackend, + parser: { + syntax: 'ecmascript', + jsx: true, + dynamicImport: true, + }, + }, }, }, { From 18ab337f96ecb0d72ca95af2090ba82b06cf655b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 23 Aug 2022 10:29:17 +0000 Subject: [PATCH 273/275] Version Packages (next) --- .changeset/pre.json | 42 +- docs/releases/v1.6.0-next.0-changelog.md | 1974 +++++++++++++++++ package.json | 2 +- packages/app-defaults/CHANGELOG.md | 10 + packages/app-defaults/package.json | 14 +- packages/app/CHANGELOG.md | 58 + packages/app/package.json | 108 +- packages/backend-app-api/CHANGELOG.md | 11 + packages/backend-app-api/package.json | 12 +- packages/backend-common/CHANGELOG.md | 10 + packages/backend-common/package.json | 10 +- packages/backend-defaults/CHANGELOG.md | 9 + packages/backend-defaults/package.json | 8 +- packages/backend-next/CHANGELOG.md | 9 + packages/backend-next/package.json | 10 +- packages/backend-plugin-api/CHANGELOG.md | 11 + packages/backend-plugin-api/package.json | 10 +- packages/backend-tasks/CHANGELOG.md | 9 + packages/backend-tasks/package.json | 8 +- packages/backend-test-utils/CHANGELOG.md | 12 + packages/backend-test-utils/package.json | 12 +- packages/backend/CHANGELOG.md | 39 + packages/backend/package.json | 68 +- packages/catalog-client/CHANGELOG.md | 7 + packages/catalog-client/package.json | 4 +- packages/catalog-model/package.json | 2 +- packages/cli/CHANGELOG.md | 69 + packages/cli/package.json | 18 +- packages/config-loader/CHANGELOG.md | 6 + packages/config-loader/package.json | 2 +- packages/config/package.json | 2 +- packages/core-app-api/CHANGELOG.md | 9 + packages/core-app-api/package.json | 8 +- packages/core-components/CHANGELOG.md | 10 + packages/core-components/package.json | 10 +- packages/core-plugin-api/CHANGELOG.md | 8 + packages/core-plugin-api/package.json | 8 +- packages/create-app/CHANGELOG.md | 94 + packages/create-app/package.json | 2 +- packages/dev-utils/CHANGELOG.md | 14 + packages/dev-utils/package.json | 18 +- packages/errors/package.json | 2 +- packages/integration-react/CHANGELOG.md | 10 + packages/integration-react/package.json | 14 +- packages/integration/CHANGELOG.md | 6 + packages/integration/package.json | 8 +- packages/release-manifests/CHANGELOG.md | 6 + packages/release-manifests/package.json | 4 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 16 + .../techdocs-cli-embedded-app/package.json | 24 +- packages/techdocs-cli/CHANGELOG.md | 8 + packages/techdocs-cli/package.json | 8 +- packages/test-utils/CHANGELOG.md | 11 + packages/test-utils/package.json | 12 +- packages/theme/package.json | 2 +- packages/types/package.json | 2 +- packages/version-bridge/package.json | 2 +- plugins/adr-backend/CHANGELOG.md | 12 + plugins/adr-backend/package.json | 14 +- plugins/adr-common/CHANGELOG.md | 8 + plugins/adr-common/package.json | 8 +- plugins/adr/CHANGELOG.md | 15 + plugins/adr/package.json | 24 +- plugins/airbrake-backend/CHANGELOG.md | 8 + plugins/airbrake-backend/package.json | 6 +- plugins/airbrake/CHANGELOG.md | 12 + plugins/airbrake/package.json | 20 +- plugins/allure/CHANGELOG.md | 10 + plugins/allure/package.json | 16 +- plugins/analytics-module-ga/CHANGELOG.md | 9 + plugins/analytics-module-ga/package.json | 14 +- plugins/apache-airflow/CHANGELOG.md | 10 + plugins/apache-airflow/package.json | 14 +- .../package.json | 2 +- plugins/api-docs/CHANGELOG.md | 13 + plugins/api-docs/package.json | 18 +- plugins/apollo-explorer/CHANGELOG.md | 10 + plugins/apollo-explorer/package.json | 14 +- plugins/app-backend/CHANGELOG.md | 10 + plugins/app-backend/package.json | 10 +- plugins/auth-backend/CHANGELOG.md | 10 + plugins/auth-backend/package.json | 12 +- plugins/auth-node/CHANGELOG.md | 8 + plugins/auth-node/package.json | 6 +- plugins/azure-devops-backend/CHANGELOG.md | 47 + plugins/azure-devops-backend/package.json | 8 +- plugins/azure-devops-common/CHANGELOG.md | 53 + plugins/azure-devops-common/package.json | 4 +- plugins/azure-devops/CHANGELOG.md | 59 + plugins/azure-devops/package.json | 18 +- plugins/badges-backend/CHANGELOG.md | 9 + plugins/badges-backend/package.json | 8 +- plugins/badges/CHANGELOG.md | 11 + plugins/badges/package.json | 16 +- plugins/bazaar-backend/CHANGELOG.md | 9 + plugins/bazaar-backend/package.json | 8 +- plugins/bazaar/CHANGELOG.md | 12 + plugins/bazaar/package.json | 18 +- plugins/bitbucket-cloud-common/CHANGELOG.md | 8 + plugins/bitbucket-cloud-common/package.json | 6 +- plugins/bitrise/CHANGELOG.md | 10 + plugins/bitrise/package.json | 16 +- .../catalog-backend-module-aws/CHANGELOG.md | 10 + .../catalog-backend-module-aws/package.json | 12 +- .../catalog-backend-module-azure/CHANGELOG.md | 11 + .../catalog-backend-module-azure/package.json | 14 +- .../CHANGELOG.md | 11 + .../package.json | 16 +- .../CHANGELOG.md | 11 + .../package.json | 14 +- .../CHANGELOG.md | 11 + .../package.json | 14 +- .../CHANGELOG.md | 11 + .../package.json | 14 +- .../CHANGELOG.md | 14 + .../package.json | 18 +- .../CHANGELOG.md | 11 + .../package.json | 14 +- .../catalog-backend-module-ldap/CHANGELOG.md | 9 + .../catalog-backend-module-ldap/package.json | 8 +- .../CHANGELOG.md | 10 + .../package.json | 12 +- .../CHANGELOG.md | 10 + .../package.json | 14 +- plugins/catalog-backend/CHANGELOG.md | 19 + plugins/catalog-backend/package.json | 30 +- plugins/catalog-common/CHANGELOG.md | 8 + plugins/catalog-common/package.json | 8 +- plugins/catalog-customized/CHANGELOG.md | 8 + plugins/catalog-customized/package.json | 6 +- plugins/catalog-graph/CHANGELOG.md | 10 + plugins/catalog-graph/package.json | 20 +- plugins/catalog-graphql/CHANGELOG.md | 6 + plugins/catalog-graphql/package.json | 6 +- plugins/catalog-import/CHANGELOG.md | 13 + plugins/catalog-import/package.json | 22 +- plugins/catalog-node/CHANGELOG.md | 8 + plugins/catalog-node/package.json | 8 +- plugins/catalog-react/CHANGELOG.md | 14 + plugins/catalog-react/package.json | 26 +- plugins/catalog/CHANGELOG.md | 14 + plugins/catalog/package.json | 28 +- .../CHANGELOG.md | 8 + .../package.json | 8 +- plugins/cicd-statistics/CHANGELOG.md | 8 + plugins/cicd-statistics/package.json | 6 +- plugins/circleci/CHANGELOG.md | 11 + plugins/circleci/package.json | 16 +- plugins/cloudbuild/CHANGELOG.md | 12 + plugins/cloudbuild/package.json | 16 +- plugins/code-climate/CHANGELOG.md | 10 + plugins/code-climate/package.json | 14 +- plugins/code-coverage-backend/CHANGELOG.md | 11 + plugins/code-coverage-backend/package.json | 10 +- plugins/code-coverage/CHANGELOG.md | 10 + plugins/code-coverage/package.json | 16 +- plugins/codescene/CHANGELOG.md | 9 + plugins/codescene/package.json | 14 +- plugins/config-schema/CHANGELOG.md | 9 + plugins/config-schema/package.json | 14 +- plugins/cost-insights-common/package.json | 2 +- plugins/cost-insights/CHANGELOG.md | 10 + plugins/cost-insights/package.json | 14 +- plugins/dynatrace/CHANGELOG.md | 18 + plugins/dynatrace/package.json | 16 +- .../example-todo-list-backend/CHANGELOG.md | 8 + .../example-todo-list-backend/package.json | 8 +- plugins/example-todo-list-common/CHANGELOG.md | 7 + plugins/example-todo-list-common/package.json | 12 +- plugins/example-todo-list/CHANGELOG.md | 8 + plugins/example-todo-list/package.json | 14 +- plugins/explore-react/CHANGELOG.md | 8 + plugins/explore-react/package.json | 10 +- plugins/explore/CHANGELOG.md | 12 + plugins/explore/package.json | 18 +- plugins/firehydrant/CHANGELOG.md | 10 + plugins/firehydrant/package.json | 16 +- plugins/fossa/CHANGELOG.md | 11 + plugins/fossa/package.json | 16 +- plugins/gcalendar/CHANGELOG.md | 9 + plugins/gcalendar/package.json | 14 +- plugins/gcp-projects/CHANGELOG.md | 9 + plugins/gcp-projects/package.json | 14 +- plugins/git-release-manager/CHANGELOG.md | 11 + plugins/git-release-manager/package.json | 16 +- plugins/github-actions/CHANGELOG.md | 12 + plugins/github-actions/package.json | 18 +- plugins/github-deployments/CHANGELOG.md | 12 + plugins/github-deployments/package.json | 20 +- plugins/github-issues/CHANGELOG.md | 11 + plugins/github-issues/package.json | 18 +- .../github-pull-requests-board/CHANGELOG.md | 11 + .../github-pull-requests-board/package.json | 16 +- plugins/gitops-profiles/CHANGELOG.md | 9 + plugins/gitops-profiles/package.json | 14 +- plugins/gocd/CHANGELOG.md | 10 + plugins/gocd/package.json | 16 +- plugins/graphiql/CHANGELOG.md | 9 + plugins/graphiql/package.json | 14 +- plugins/graphql-backend/CHANGELOG.md | 9 + plugins/graphql-backend/package.json | 8 +- plugins/home/CHANGELOG.md | 11 + plugins/home/package.json | 18 +- plugins/ilert/CHANGELOG.md | 10 + plugins/ilert/package.json | 16 +- plugins/jenkins-backend/CHANGELOG.md | 12 + plugins/jenkins-backend/package.json | 14 +- plugins/jenkins-common/CHANGELOG.md | 8 + plugins/jenkins-common/package.json | 8 +- plugins/jenkins/CHANGELOG.md | 12 + plugins/jenkins/package.json | 18 +- plugins/kafka-backend/CHANGELOG.md | 8 + plugins/kafka-backend/package.json | 6 +- plugins/kafka/CHANGELOG.md | 11 + plugins/kafka/package.json | 16 +- plugins/kubernetes-backend/CHANGELOG.md | 9 + plugins/kubernetes-backend/package.json | 10 +- plugins/kubernetes-common/package.json | 2 +- plugins/kubernetes/CHANGELOG.md | 11 + plugins/kubernetes/package.json | 16 +- plugins/lighthouse/CHANGELOG.md | 11 + plugins/lighthouse/package.json | 16 +- plugins/newrelic-dashboard/CHANGELOG.md | 10 + plugins/newrelic-dashboard/package.json | 12 +- plugins/newrelic/CHANGELOG.md | 9 + plugins/newrelic/package.json | 14 +- plugins/org/CHANGELOG.md | 11 + plugins/org/package.json | 18 +- plugins/pagerduty/CHANGELOG.md | 11 + plugins/pagerduty/package.json | 16 +- plugins/periskop-backend/CHANGELOG.md | 8 + plugins/periskop-backend/package.json | 6 +- plugins/periskop/CHANGELOG.md | 10 + plugins/periskop/package.json | 16 +- plugins/permission-backend/CHANGELOG.md | 11 + plugins/permission-backend/package.json | 12 +- plugins/permission-common/CHANGELOG.md | 6 + plugins/permission-common/package.json | 4 +- plugins/permission-node/CHANGELOG.md | 10 + plugins/permission-node/package.json | 10 +- plugins/permission-react/CHANGELOG.md | 8 + plugins/permission-react/package.json | 10 +- plugins/proxy-backend/CHANGELOG.md | 9 + plugins/proxy-backend/package.json | 6 +- plugins/rollbar-backend/CHANGELOG.md | 8 + plugins/rollbar-backend/package.json | 8 +- plugins/rollbar/CHANGELOG.md | 10 + plugins/rollbar/package.json | 16 +- .../CHANGELOG.md | 10 + .../package.json | 10 +- .../CHANGELOG.md | 9 + .../package.json | 10 +- .../CHANGELOG.md | 7 + .../package.json | 6 +- plugins/scaffolder-backend/CHANGELOG.md | 34 + plugins/scaffolder-backend/package.json | 20 +- plugins/scaffolder-common/CHANGELOG.md | 6 + plugins/scaffolder-common/package.json | 4 +- plugins/scaffolder/CHANGELOG.md | 24 + plugins/scaffolder/package.json | 30 +- .../CHANGELOG.md | 9 + .../package.json | 10 +- plugins/search-backend-module-pg/CHANGELOG.md | 24 + plugins/search-backend-module-pg/package.json | 12 +- plugins/search-backend-node/CHANGELOG.md | 11 + plugins/search-backend-node/package.json | 14 +- plugins/search-backend/CHANGELOG.md | 12 + plugins/search-backend/package.json | 16 +- plugins/search-common/CHANGELOG.md | 7 + plugins/search-common/package.json | 6 +- plugins/search-react/CHANGELOG.md | 9 + plugins/search-react/package.json | 12 +- plugins/search/CHANGELOG.md | 12 + plugins/search/package.json | 20 +- plugins/sentry/CHANGELOG.md | 11 + plugins/sentry/package.json | 16 +- plugins/shortcuts/CHANGELOG.md | 9 + plugins/shortcuts/package.json | 14 +- plugins/sonarqube-backend/CHANGELOG.md | 9 + plugins/sonarqube-backend/package.json | 8 +- plugins/sonarqube/CHANGELOG.md | 11 + plugins/sonarqube/package.json | 16 +- plugins/splunk-on-call/CHANGELOG.md | 10 + plugins/splunk-on-call/package.json | 16 +- plugins/stack-overflow-backend/CHANGELOG.md | 7 + plugins/stack-overflow-backend/package.json | 4 +- plugins/stack-overflow/CHANGELOG.md | 11 + plugins/stack-overflow/package.json | 18 +- .../CHANGELOG.md | 8 + .../package.json | 8 +- plugins/tech-insights-backend/CHANGELOG.md | 13 + plugins/tech-insights-backend/package.json | 14 +- plugins/tech-insights-common/package.json | 2 +- plugins/tech-insights-node/CHANGELOG.md | 10 + plugins/tech-insights-node/package.json | 8 +- plugins/tech-insights/CHANGELOG.md | 11 + plugins/tech-insights/package.json | 16 +- plugins/tech-radar/CHANGELOG.md | 9 + plugins/tech-radar/package.json | 14 +- .../techdocs-addons-test-utils/CHANGELOG.md | 16 + .../techdocs-addons-test-utils/package.json | 24 +- plugins/techdocs-backend/CHANGELOG.md | 14 + plugins/techdocs-backend/package.json | 22 +- .../CHANGELOG.md | 13 + .../package.json | 22 +- plugins/techdocs-node/CHANGELOG.md | 9 + plugins/techdocs-node/package.json | 10 +- plugins/techdocs-react/CHANGELOG.md | 8 + plugins/techdocs-react/package.json | 8 +- plugins/techdocs/CHANGELOG.md | 18 + plugins/techdocs/package.json | 26 +- plugins/todo-backend/CHANGELOG.md | 10 + plugins/todo-backend/package.json | 10 +- plugins/todo/CHANGELOG.md | 10 + plugins/todo/package.json | 16 +- plugins/user-settings/CHANGELOG.md | 10 + plugins/user-settings/package.json | 14 +- plugins/vault-backend/CHANGELOG.md | 11 + plugins/vault-backend/package.json | 10 +- plugins/vault/CHANGELOG.md | 10 + plugins/vault/package.json | 16 +- plugins/xcmetrics/CHANGELOG.md | 9 + plugins/xcmetrics/package.json | 14 +- yarn.lock | 331 ++- 324 files changed, 5358 insertions(+), 1170 deletions(-) create mode 100644 docs/releases/v1.6.0-next.0-changelog.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 172b96d8f6..a2f1d9f8e8 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -171,5 +171,45 @@ "@backstage/plugin-vault-backend": "0.2.1", "@backstage/plugin-xcmetrics": "0.2.28" }, - "changesets": [] + "changesets": [ + "beige-monkeys-add", + "beige-pumas-tap", + "clever-beans-turn", + "cold-frogs-kiss", + "dry-games-end", + "eight-spies-protect", + "five-carrots-pay", + "fresh-rabbits-juggle", + "gorgeous-swans-kiss", + "happy-kiwis-look", + "hot-files-begin", + "hot-suits-glow", + "hungry-dogs-agree", + "lazy-snakes-film", + "light-beans-share", + "lucky-points-wash", + "nervous-rivers-sneeze", + "old-tables-joke", + "renovate-7d3b357", + "renovate-c98c336", + "rotten-books-crash", + "rude-books-rush", + "shaggy-chicken-behave", + "sharp-swans-suffer", + "shiny-lobsters-fix", + "silent-kings-live", + "slimy-zebras-reply", + "spicy-cherries-remember", + "strong-games-kiss", + "strong-planes-return", + "tame-papayas-protect", + "techdocs-jeans-wait", + "tiny-oranges-thank", + "tough-dolphins-smile", + "two-planets-provide", + "weak-yaks-learn", + "wild-sheep-roll", + "witty-cats-wink", + "young-trees-rescue" + ] } diff --git a/docs/releases/v1.6.0-next.0-changelog.md b/docs/releases/v1.6.0-next.0-changelog.md new file mode 100644 index 0000000000..5ff2311b79 --- /dev/null +++ b/docs/releases/v1.6.0-next.0-changelog.md @@ -0,0 +1,1974 @@ +# Release v1.6.0-next.0 + +## @backstage/plugin-azure-devops@0.2.0-next.0 + +### Minor Changes + +- 6c1c59b96e: Added README card `EntityAzureReadmeCard` for Azure Devops. + + To get the README component working you'll need to do the following two steps: + + 1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: + + ```bash + # From your Backstage root directory + yarn add --cwd packages/app @backstage/plugin-azure-devops + ``` + + 2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: + + ```tsx + // In packages/app/src/components/catalog/EntityPage.tsx + import { + EntityAzureReadmeCard, + isAzureDevOpsAvailable, + } from '@backstage/plugin-azure-devops'; + + // As it is a card, you can customize it the way you prefer + // For example in the Service section + + const overviewContent = ( + + + + + ... + + + + + + + + ); + ``` + + **Notes:** + + - You'll need to add the `EntitySwitch.Case` above from step 2 to all the entity sections you want to see Readme in. For example if you wanted to see Readme when looking at Website entities then you would need to add this to the `websiteEntityPage` section. + - The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation + - The `maxHeight` property on the `EntityAzureReadmeCard` will set the maximum screen size you would like to see, if not set it will default to 100% + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/plugin-azure-devops-common@0.3.0-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-azure-devops-common@0.3.0-next.0 + +### Minor Changes + +- 6c1c59b96e: Added README card `EntityAzureReadmeCard` for Azure Devops. + + To get the README component working you'll need to do the following two steps: + + 1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: + + ```bash + # From your Backstage root directory + yarn add --cwd packages/app @backstage/plugin-azure-devops + ``` + + 2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: + + ```tsx + // In packages/app/src/components/catalog/EntityPage.tsx + import { + EntityAzureReadmeCard, + isAzureDevOpsAvailable, + } from '@backstage/plugin-azure-devops'; + + // As it is a card, you can customize it the way you prefer + // For example in the Service section + + const overviewContent = ( + + + + + ... + + + + + + + + ); + ``` + + **Notes:** + + - You'll need to add the `EntitySwitch.Case` above from step 2 to all the entity sections you want to see Readme in. For example if you wanted to see Readme when looking at Website entities then you would need to add this to the `websiteEntityPage` section. + - The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation + - The `maxHeight` property on the `EntityAzureReadmeCard` will set the maximum screen size you would like to see, if not set it will default to 100% + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup + +## @backstage/plugin-dynatrace@0.2.0-next.0 + +### Minor Changes + +- e44c0b3811: New features: + + - Some visual improvements to the table that displays Problems + - Added support for viewing recent Synthetics results using + - Added some additional linking to the configured Dynatrace instance + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-scaffolder@1.6.0-next.0 + +### Minor Changes + +- 3424a8075d: Added support for `async` validation for the `next` version of the plugin +- 192d856495: Implementing review step for the scaffolder under `create/next` + +### Patch Changes + +- 9ffb75616d: Fix bug with empty strings in `EntityPicker` +- 3f739be9d9: Minor API signatures cleanup +- 9097278df2: Updated dependency `json-schema-library` to `^7.0.0`. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-scaffolder-common@1.2.0-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + +## @backstage/plugin-scaffolder-backend@1.6.0-next.0 + +### Minor Changes + +- ea2eee9e6a: Add the option for a homepage when using the `github:publish` action + +- 8872cc735d: Fixed a bug in plugin-scaffolder-backend where it ignores the skip migration database options. + + To use this new implementation you need to create the instance of `DatabaseTaskStore` using the `PluginDatabaseManager` instead of `Knex`; + + import { DatabaseManager, getRootLogger, loadBackendConfig } from '@backstage/backend-common'; + import { DatabaseTaskStore } from '@backstage/plugin-scaffolder-backend'; + + const config = await loadBackendConfig({ argv: process.argv, logger: getRootLogger() }); + const databaseManager = DatabaseManager.fromConfig(config, { migrations: { skip: true } }); + const databaseTaskStore = await DatabaseTaskStore.create(databaseManager); + +- 1ff817b3f0: add entity metadata to the template info type + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 2df9955f4a: Removed the depreacated `publish:file` action, use the template editor to test templates instead. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-scaffolder-common@1.2.0-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + +## @backstage/plugin-scaffolder-common@1.2.0-next.0 + +### Minor Changes + +- 1ff817b3f0: add entity metadata to the template info type + +## @backstage/plugin-search-backend-module-pg@0.4.0-next.0 + +### Minor Changes + +- 8872cc735d: Fixed a bug in search-backend-module-pg where it ignores the skip migration database options when using the database. + + To use this new implementation you need to create the instance of `DatabaseDocumentStore` using the `PluginDatabaseManager` instead of `Knex`; + + import { DatabaseManager, getRootLogger, loadBackendConfig } from '@backstage/backend-common'; + import { DatabaseDocumentStore } from '@backstage/plugin-search-backend-module-pg'; + + const config = await loadBackendConfig({ argv: process.argv, logger: getRootLogger() }); + const databaseManager = DatabaseManager.fromConfig(config, { migrations: { skip: true } }); + const databaseDocumentStore = await DatabaseDocumentStore.create(databaseManager); + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/app-defaults@1.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + +## @backstage/backend-app-api@0.2.1-next.0 + +### Patch Changes + +- de3347ca74: Updated usages of `ServiceFactory`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + +## @backstage/backend-common@0.15.1-next.0 + +### Patch Changes + +- 399286d7dd: Workaround support for `swc` instead of `sucrase` +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/config-loader@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/backend-defaults@0.1.1-next.0 + +### Patch Changes + +- de3347ca74: Updated usages of `ServiceFactory`. +- Updated dependencies + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/backend-app-api@0.2.1-next.0 + +## @backstage/backend-plugin-api@0.1.2-next.0 + +### Patch Changes + +- eef91a2558: Simplified the `ServiceFactory` type and removed `AnyServiceFactory`. +- 68513f169a: When defining a new `ServiceRef` you can now also include a `defaultFactory`, which will be used to construct instances of the service in case there is no explicit factory defined. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + +## @backstage/backend-tasks@0.3.5-next.0 + +### Patch Changes + +- 243533ecdc: Added support to mysql on some raw queries +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/backend-test-utils@0.1.28-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- de3347ca74: Updated usages of `ServiceFactory`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/backend-app-api@0.2.1-next.0 + +## @backstage/catalog-client@1.0.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup + +## @backstage/cli@0.18.2-next.0 + +### Patch Changes + +- 6ae0f6a719: Switch out `sucrase` for `swc` for transpilation. + + `sucrase` is a little more relaxed when it comes to supporting the ways of mocking in `jest`. You might have to make some changes to your tests to meet the `jest` standard and spec if your tests seems to start failing. + + Mocks that look like this are invalid, and they will throw a reference error in line with the `jest` documentation [here on example 3](https://jestjs.io/docs/es6-class-mocks#calling-jestmock-with-the-module-factory-parameter) + + ```ts + const mockCommandExists = jest.fn(); + jest.mock('command-exists', () => mockCommandExists); + ``` + + You might need to update these mocks to look a little like the following to defer the call to the `jest.fn()` spy until the mock is called. + + ```ts + const mockCommandExists = jest.fn(); + jest.mock( + 'command-exists', + () => + (...args: any[]) => + commandExists(...args), + ); + ``` + + Also, imports are immutable. So it means that you might get some errors when trying to use `jest.spyOn` with starred imports. You might see an error like this: + + ```log + TypeError: Cannot redefine property: executeFrameHandlerStrategy + at Function.defineProperty () + + 20 | import { AuthResolverContext } from '../types'; + 21 | + > 22 | const mockFrameHandler = jest.spyOn( + | ^ + 23 | helpers, + 24 | 'executeFrameHandlerStrategy', + 25 | ) as unknown as jest.MockedFunction< + ``` + + This happens when you try to do `import * as something from './something'` and then `jest.spyOn(something, 'test)`. You will need to add a `jest.mock` call to mock out the required starred import to return `jest.fn()` functions from the start. Something like this fixes the above test: + + ```ts + jest.mock('../../helpers', () => ({ + executeFrameHandlerStrategy: jest.fn(), + })); + ``` + + You can also remove any occurrence of `hot(App)` and any import of `react-hot-loader` if you're using the that package locally, as all this has now been replaced with [React Refresh](https://www.npmjs.com/package/react-refresh) which you will get out of the box with the new CLI. + + **Note** If you're experiencing difficulties with running tests after the migration, please reach out to us on Discord to see if we can help, or raise an issue. But in the meantime you can switch back to the existing behaviour by using the following config in your root `package.json`. + + ```json + "jest": { + "transform": { + "\\.(js|jsx|ts|tsx|mjs|cjs)$": "@backstage/cli/config/jestSucraseTransform.js", + "\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$": "@backstage/cli/config/jestFileTransform.js", + "\\.(yaml)$": "jest-transform-yaml" + } + } + ``` + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + +- Updated dependencies + - @backstage/config-loader@1.1.4-next.0 + - @backstage/release-manifests@0.0.6-next.0 + +## @backstage/config-loader@1.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + +## @backstage/core-app-api@1.0.6-next.0 + +### Patch Changes + +- 744fea158b: Added `getSystemIcons()` function to the `AppContext` available through `useApp` that will pull a list of all the icons that have been registered in the App. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + +## @backstage/core-components@0.11.1-next.0 + +### Patch Changes + +- b29c44d895: Adds code to generate ids for headers parsed through the MarkdownContent component. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + +## @backstage/core-plugin-api@1.0.6-next.0 + +### Patch Changes + +- 744fea158b: Added `getSystemIcons()` function to the `AppContext` available through `useApp` that will pull a list of all the icons that have been registered in the App. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup + +## @backstage/create-app@0.4.31-next.0 + +### Patch Changes + +- e83de28e36: Fix typo in the documentation + +- 208d6780c9: The `packages/backend/Dockerfile` received a couple of updates, it now looks as follows: + + ```Dockerfile + FROM node:16-bullseye-slim + + # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, + # in which case you should also move better-sqlite3 to "devDependencies" in package.json. + RUN apt-get update && \ + apt-get install -y --no-install-recommends libsqlite3-dev python3 build-essential && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + + # From here on we use the least-privileged `node` user to run the backend. + USER node + WORKDIR /app + + # This switches many Node.js dependencies to production mode. + ENV NODE_ENV production + + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. + # The skeleton contains the package.json of each package in the monorepo, + # and along with yarn.lock and the root package.json, that's enough to run yarn install. + COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ + RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz + + RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" + + # Then copy the rest of the backend bundle, along with any other files we might want. + COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ + RUN tar xzf bundle.tar.gz && rm bundle.tar.gz + + CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] + ``` + + The two notable changes are that a `USER node` instruction has been added and the ordering of instructions has been changed accordingly. This means that the app will now be running using the least-privileged `node` user. In order for this to work we now need to make sure that all app files are owned by the `node` user, which we do by adding the `--chown=node:node` option to the `COPY` instructions. + + The second change is the addition of `ENV NODE_ENV production`, which ensured that all Node.js modules run in production mode. If you apply this change to an existing app, note that one of the more significant changes is that this switches the log formatting to use the default production format, JSON. Rather than your log lines looking like this: + + ```log + 2022-08-10T11:36:05.478Z catalog info Performing database migration type=plugin + ``` + + They will now look like this: + + ```log + {"level":"info","message":"Performing database migration","plugin":"catalog","service":"backstage","type":"plugin"} + ``` + + If you wish to keep the existing format, you can override this change by applying the following change to `packages/backend/src/index.ts`: + + ```diff + getRootLogger, + + setRootLogger, + + createRootLogger, + + coloredFormat, + useHotMemoize, + ... + ServerTokenManager, + } from '@backstage/backend-common'; + + ... + + async function main() { + + setRootLogger(createRootLogger({ format: coloredFormat })); + + + const config = await loadBackendConfig({ + ``` + +- c0a08fd08c: Added `EntityLinksCard` to the system `EntityPage`. + + For an existing installation where you want to display the links card for entity pages of kind `system` you should make the following adjustment to `packages/app/src/components/catalog/EntityPage.tsx` + + ```diff + const systemPage = ( + ... + + + + + + + + + + - + + + + + ... + ); + ``` + +## @backstage/dev-utils@1.0.6-next.0 + +### Patch Changes + +- 4c5e85ddf3: Removed the dependency and setup of `react-hot-loader`, since the `@backstage/cli` now uses `swc` with `React Refresh` instead. +- Updated dependencies + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/app-defaults@1.0.6-next.0 + +## @backstage/integration@1.3.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + +## @backstage/integration-react@1.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/release-manifests@0.0.6-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + +## @techdocs/cli@1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-techdocs-node@1.3.1-next.0 + +## @backstage/test-utils@1.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + +## @backstage/plugin-adr@0.2.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-adr-common@0.2.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-adr-backend@0.2.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-adr-common@0.2.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-adr-common@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-airbrake@0.3.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/dev-utils@1.0.6-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-airbrake-backend@0.2.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/plugin-allure@0.1.25-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-analytics-module-ga@0.1.20-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-apache-airflow@0.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-api-docs@0.8.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + +## @backstage/plugin-apollo-explorer@0.1.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-app-backend@0.3.36-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/config-loader@1.1.4-next.0 + +## @backstage/plugin-auth-backend@0.15.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + +## @backstage/plugin-auth-node@0.2.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/plugin-azure-devops-backend@0.3.15-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + +- cb1cfc018b: `createRouter` now requires an additional reader: `UrlReader` argument + + ```diff + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + return createRouter({ + logger: env.logger, + config: env.config, + + reader: env.reader, + }); + } + ``` + + Remember to check if you have already provided these settings previously. + + #### [Azure DevOps] + + ```yaml + # app-config.yaml + azureDevOps: + host: dev.azure.com + token: my-token + organization: my-company + ``` + + #### [Azure Integrations] + + ```yaml + # app-config.yaml + integrations: + azure: + - host: dev.azure.com + token: ${AZURE_TOKEN} + ``` + +- ef9ab322de: Minor API signatures cleanup + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-azure-devops-common@0.3.0-next.0 + +## @backstage/plugin-badges@0.2.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-badges-backend@0.1.30-next.0 + +### Patch Changes + +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + +## @backstage/plugin-bazaar@0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + +## @backstage/plugin-bazaar-backend@0.1.20-next.0 + +### Patch Changes + +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-test-utils@0.1.28-next.0 + +## @backstage/plugin-bitbucket-cloud-common@0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-bitrise@0.1.36-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-catalog@1.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-catalog-backend@1.3.2-next.0 + +### Patch Changes + +- 243533ecdc: Added support to mysql on some raw queries +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 62788b2ee8: The experimental `CatalogProcessingExtensionPoint` now accepts multiple providers and processors at once. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + - @backstage/plugin-scaffolder-common@1.2.0-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.1.7-next.0 + +### Patch Changes + +- 3c4a388537: New experimental alpha exports for use with the upcoming backend system. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.3-next.0 + +### Patch Changes + +- c54fcea9af: Now the `searchStream` method in LDAP client awaits the callbacks +- Updated dependencies + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 4c82b955fc: Fix typo +- Updated dependencies + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + +## @backstage/plugin-catalog-common@1.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-catalog-graph@0.2.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-catalog-graphql@0.3.13-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + +## @backstage/plugin-catalog-import@0.8.12-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-catalog-node@1.0.2-next.0 + +### Patch Changes + +- 62788b2ee8: The experimental `CatalogProcessingExtensionPoint` now accepts multiple providers and processors at once. +- Updated dependencies + - @backstage/backend-plugin-api@0.1.2-next.0 + +## @backstage/plugin-catalog-react@1.1.4-next.0 + +### Patch Changes + +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + +## @backstage/plugin-cicd-statistics@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-cicd-statistics@0.1.11-next.0 + +## @backstage/plugin-circleci@0.3.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-cloudbuild@0.3.9-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-code-climate@0.1.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-code-coverage@0.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-code-coverage-backend@0.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-codescene@0.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-config-schema@0.1.32-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-cost-insights@0.11.31-next.0 + +### Patch Changes + +- 9318bf15d4: The `CostInsightsHeader`component now uses group names if available +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-explore@0.3.40-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-explore-react@0.0.21-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-explore-react@0.0.21-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + +## @backstage/plugin-firehydrant@0.1.26-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-fossa@0.2.41-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-gcalendar@0.3.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-gcp-projects@0.3.28-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-git-release-manager@0.3.22-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-github-actions@0.5.9-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-github-deployments@0.1.40-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-github-issues@0.1.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-github-pull-requests-board@0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-gitops-profiles@0.3.27-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-gocd@0.1.15-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-graphiql@0.2.41-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-graphql-backend@0.1.26-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-graphql@0.3.13-next.0 + +## @backstage/plugin-home@0.4.25-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-stack-overflow@0.1.5-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-ilert@0.1.35-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-jenkins@0.7.8-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-jenkins-common@0.1.8-next.0 + +## @backstage/plugin-jenkins-backend@0.1.26-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-jenkins-common@0.1.8-next.0 + +## @backstage/plugin-jenkins-common@0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + +## @backstage/plugin-kafka@0.3.9-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-kafka-backend@0.2.29-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/plugin-kubernetes@0.7.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-kubernetes-backend@0.7.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + +## @backstage/plugin-lighthouse@0.3.9-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-newrelic@0.3.27-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-newrelic-dashboard@0.2.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-org@0.5.9-next.0 + +### Patch Changes + +- ab6650ede9: Added an edit button to the `UserProfileCard` that is enabled when the `backstage.io/edit-url` is present, this matches how the `GroupProfileCard` works +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-pagerduty@0.5.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-periskop@0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-periskop-backend@0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/plugin-permission-backend@0.5.11-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + +## @backstage/plugin-permission-common@0.6.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + +## @backstage/plugin-permission-node@0.6.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + +## @backstage/plugin-permission-react@0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + +## @backstage/plugin-proxy-backend@0.2.30-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/plugin-rollbar@0.4.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-rollbar-backend@0.1.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.11-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + +## @backstage/plugin-search@1.0.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-search-backend@1.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.0.2-next.0 + +### Patch Changes + +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-search-backend-node@1.0.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-search-common@1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 + +## @backstage/plugin-search-react@1.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-sentry@0.4.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-shortcuts@0.3.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-sonarqube@0.4.1-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-sonarqube-backend@0.1.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + +## @backstage/plugin-splunk-on-call@0.3.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-stack-overflow@0.1.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-home@0.4.25-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-stack-overflow-backend@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-tech-insights@0.2.5-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-tech-insights-backend@0.5.2-next.0 + +### Patch Changes + +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- 2e0689e536: Support for timeout in FactRetrieverRegistrationOptions +- 9e8e9f5243: Modify Tech insight initialization to expose FactRetrieverEngine. Enables users to trigger fact retrieval manually or reschedule retrievers on runtime. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-tech-insights-node@0.3.4-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/catalog-client@1.0.5-next.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-tech-insights-node@0.3.4-next.0 + +## @backstage/plugin-tech-insights-node@0.3.4-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- 2e0689e536: Support for timeout in FactRetrieverRegistrationOptions +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + +## @backstage/plugin-tech-radar@0.5.16-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-techdocs@1.3.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 829f14a9b0: Always update the title and sub-title when the location changes on a `TechDocs` reader page. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/plugin-techdocs@1.3.2-next.0 + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + +## @backstage/plugin-techdocs-backend@1.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-techdocs-node@1.3.1-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.4-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + +## @backstage/plugin-techdocs-node@1.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## @backstage/plugin-techdocs-react@1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-todo@0.2.11-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-todo-backend@0.1.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + +## @backstage/plugin-user-settings@0.4.8-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @backstage/plugin-vault@0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + +## @backstage/plugin-vault-backend@0.2.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/backend-test-utils@0.1.28-next.0 + +## @backstage/plugin-xcmetrics@0.2.29-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## example-app@0.2.75-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kafka@0.3.9-next.0 + - @backstage/plugin-lighthouse@0.3.9-next.0 + - @backstage/plugin-scaffolder@1.6.0-next.0 + - @backstage/plugin-azure-devops@0.2.0-next.0 + - @backstage/plugin-cloudbuild@0.3.9-next.0 + - @backstage/plugin-explore@0.3.40-next.0 + - @backstage/plugin-github-actions@0.5.9-next.0 + - @backstage/plugin-jenkins@0.7.8-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.2-next.0 + - @backstage/plugin-pagerduty@0.5.2-next.0 + - @backstage/plugin-sentry@0.4.2-next.0 + - @backstage/plugin-tech-insights@0.2.5-next.0 + - @backstage/plugin-techdocs@1.3.2-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.4-next.0 + - @backstage/plugin-user-settings@0.4.8-next.0 + - @backstage/plugin-dynatrace@0.2.0-next.0 + - @backstage/plugin-cost-insights@0.11.31-next.0 + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-org@0.5.9-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/plugin-airbrake@0.3.9-next.0 + - @backstage/plugin-apache-airflow@0.2.2-next.0 + - @backstage/plugin-api-docs@0.8.9-next.0 + - @backstage/plugin-badges@0.2.33-next.0 + - @backstage/plugin-catalog-import@0.8.12-next.0 + - @backstage/plugin-circleci@0.3.9-next.0 + - @backstage/plugin-code-coverage@0.2.2-next.0 + - @backstage/plugin-gcalendar@0.3.5-next.0 + - @backstage/plugin-gcp-projects@0.3.28-next.0 + - @backstage/plugin-gocd@0.1.15-next.0 + - @backstage/plugin-graphiql@0.2.41-next.0 + - @backstage/plugin-home@0.4.25-next.0 + - @backstage/plugin-kubernetes@0.7.2-next.0 + - @backstage/plugin-newrelic@0.3.27-next.0 + - @backstage/plugin-rollbar@0.4.9-next.0 + - @backstage/plugin-search@1.0.2-next.0 + - @backstage/plugin-shortcuts@0.3.1-next.0 + - @backstage/plugin-stack-overflow@0.1.5-next.0 + - @backstage/plugin-tech-radar@0.5.16-next.0 + - @backstage/plugin-todo@0.2.11-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/app-defaults@1.0.6-next.0 + - @backstage/plugin-catalog-graph@0.2.21-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + - @internal/plugin-catalog-customized@0.0.2-next.0 + +## example-backend@0.2.75-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/plugin-kafka-backend@0.2.29-next.0 + - @backstage/plugin-proxy-backend@0.2.30-next.0 + - @backstage/plugin-azure-devops-backend@0.3.15-next.0 + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-tech-insights-node@0.3.4-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/plugin-search-backend-module-pg@0.4.0-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-app-backend@0.3.36-next.0 + - @backstage/plugin-auth-backend@0.15.2-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-code-coverage-backend@0.2.2-next.0 + - @backstage/plugin-graphql-backend@0.1.26-next.0 + - @backstage/plugin-jenkins-backend@0.1.26-next.0 + - @backstage/plugin-permission-backend@0.5.11-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + - @backstage/plugin-rollbar-backend@0.1.33-next.0 + - @backstage/plugin-techdocs-backend@1.2.2-next.0 + - @backstage/plugin-todo-backend@0.1.33-next.0 + - @backstage/plugin-tech-insights-backend@0.5.2-next.0 + - @backstage/plugin-badges-backend@0.1.30-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.2-next.0 + - @backstage/plugin-kubernetes-backend@0.7.2-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.4-next.0 + - @backstage/plugin-search-backend@1.0.2-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.20-next.0 + - example-app@0.2.75-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + +## example-backend-next@0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/backend-defaults@0.1.1-next.0 + +## techdocs-cli-embedded-app@0.2.74-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.3.2-next.0 + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/app-defaults@1.0.6-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + +## @internal/plugin-catalog-customized@0.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + +## @internal/plugin-todo-list@1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + +## @internal/plugin-todo-list-backend@1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + +## @internal/plugin-todo-list-common@1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 diff --git a/package.json b/package.json index 3fcb63aa86..7fc0d22148 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.5.0", + "version": "1.6.0-next.0", "dependencies": { "@manypkg/get-packages": "^1.1.3", "@microsoft/api-documenter": "^7.17.11", diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 77949cbb27..f51965f4bf 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/app-defaults +## 1.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + ## 1.0.5 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 04852ec4b5..d115183602 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.0.5", + "version": "1.0.6-next.0", "private": false, "publishConfig": { "access": "public", @@ -33,10 +33,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-app-api": "^1.0.5", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-permission-react": "^0.4.4", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-permission-react": "^0.4.5-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -46,8 +46,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@types/jest": "^26.0.7", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index cdc3283c1f..45eb808f17 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,63 @@ # example-app +## 0.2.75-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kafka@0.3.9-next.0 + - @backstage/plugin-lighthouse@0.3.9-next.0 + - @backstage/plugin-scaffolder@1.6.0-next.0 + - @backstage/plugin-azure-devops@0.2.0-next.0 + - @backstage/plugin-cloudbuild@0.3.9-next.0 + - @backstage/plugin-explore@0.3.40-next.0 + - @backstage/plugin-github-actions@0.5.9-next.0 + - @backstage/plugin-jenkins@0.7.8-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.2-next.0 + - @backstage/plugin-pagerduty@0.5.2-next.0 + - @backstage/plugin-sentry@0.4.2-next.0 + - @backstage/plugin-tech-insights@0.2.5-next.0 + - @backstage/plugin-techdocs@1.3.2-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.4-next.0 + - @backstage/plugin-user-settings@0.4.8-next.0 + - @backstage/plugin-dynatrace@0.2.0-next.0 + - @backstage/plugin-cost-insights@0.11.31-next.0 + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-org@0.5.9-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/plugin-airbrake@0.3.9-next.0 + - @backstage/plugin-apache-airflow@0.2.2-next.0 + - @backstage/plugin-api-docs@0.8.9-next.0 + - @backstage/plugin-badges@0.2.33-next.0 + - @backstage/plugin-catalog-import@0.8.12-next.0 + - @backstage/plugin-circleci@0.3.9-next.0 + - @backstage/plugin-code-coverage@0.2.2-next.0 + - @backstage/plugin-gcalendar@0.3.5-next.0 + - @backstage/plugin-gcp-projects@0.3.28-next.0 + - @backstage/plugin-gocd@0.1.15-next.0 + - @backstage/plugin-graphiql@0.2.41-next.0 + - @backstage/plugin-home@0.4.25-next.0 + - @backstage/plugin-kubernetes@0.7.2-next.0 + - @backstage/plugin-newrelic@0.3.27-next.0 + - @backstage/plugin-rollbar@0.4.9-next.0 + - @backstage/plugin-search@1.0.2-next.0 + - @backstage/plugin-shortcuts@0.3.1-next.0 + - @backstage/plugin-stack-overflow@0.1.5-next.0 + - @backstage/plugin-tech-radar@0.5.16-next.0 + - @backstage/plugin-todo@0.2.11-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/app-defaults@1.0.6-next.0 + - @backstage/plugin-catalog-graph@0.2.21-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + - @internal/plugin-catalog-customized@0.0.2-next.0 + ## 0.2.74 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index bcc9e63956..c96797dac4 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,65 +1,65 @@ { "name": "example-app", - "version": "0.2.74", + "version": "0.2.75-next.0", "private": true, "backstage": { "role": "frontend" }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^1.0.5", + "@backstage/app-defaults": "^1.0.6-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-airbrake": "^0.3.8", - "@backstage/plugin-api-docs": "^0.8.8", - "@backstage/plugin-azure-devops": "^0.1.24", - "@backstage/plugin-apache-airflow": "^0.2.1", - "@backstage/plugin-badges": "^0.2.32", - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-catalog-graph": "^0.2.20", - "@backstage/plugin-catalog-import": "^0.8.11", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-circleci": "^0.3.8", - "@backstage/plugin-cloudbuild": "^0.3.8", - "@backstage/plugin-code-coverage": "^0.2.1", - "@backstage/plugin-cost-insights": "^0.11.30", - "@backstage/plugin-dynatrace": "^0.1.2", - "@backstage/plugin-explore": "^0.3.39", - "@backstage/plugin-gcalendar": "^0.3.4", - "@backstage/plugin-gcp-projects": "^0.3.27", - "@backstage/plugin-github-actions": "^0.5.8", - "@backstage/plugin-gocd": "^0.1.14", - "@backstage/plugin-graphiql": "^0.2.40", - "@backstage/plugin-home": "^0.4.24", - "@backstage/plugin-jenkins": "^0.7.7", - "@backstage/plugin-kafka": "^0.3.8", - "@backstage/plugin-kubernetes": "^0.7.1", - "@backstage/plugin-lighthouse": "^0.3.8", - "@backstage/plugin-newrelic": "^0.3.26", - "@backstage/plugin-newrelic-dashboard": "^0.2.1", - "@backstage/plugin-org": "^0.5.8", - "@backstage/plugin-pagerduty": "0.5.1", - "@backstage/plugin-permission-react": "^0.4.4", - "@backstage/plugin-rollbar": "^0.4.8", - "@backstage/plugin-scaffolder": "^1.5.0", - "@backstage/plugin-search": "^1.0.1", - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/plugin-search-react": "^1.0.1", - "@backstage/plugin-sentry": "^0.4.1", - "@backstage/plugin-shortcuts": "^0.3.0", - "@backstage/plugin-stack-overflow": "^0.1.4", - "@backstage/plugin-tech-insights": "^0.2.4", - "@backstage/plugin-tech-radar": "^0.5.15", - "@backstage/plugin-techdocs": "^1.3.1", - "@backstage/plugin-techdocs-module-addons-contrib": "^1.0.3", - "@backstage/plugin-techdocs-react": "^1.0.3", - "@backstage/plugin-todo": "^0.2.10", - "@backstage/plugin-user-settings": "^0.4.7", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-airbrake": "^0.3.9-next.0", + "@backstage/plugin-api-docs": "^0.8.9-next.0", + "@backstage/plugin-azure-devops": "^0.2.0-next.0", + "@backstage/plugin-apache-airflow": "^0.2.2-next.0", + "@backstage/plugin-badges": "^0.2.33-next.0", + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-catalog-graph": "^0.2.21-next.0", + "@backstage/plugin-catalog-import": "^0.8.12-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-circleci": "^0.3.9-next.0", + "@backstage/plugin-cloudbuild": "^0.3.9-next.0", + "@backstage/plugin-code-coverage": "^0.2.2-next.0", + "@backstage/plugin-cost-insights": "^0.11.31-next.0", + "@backstage/plugin-dynatrace": "^0.2.0-next.0", + "@backstage/plugin-explore": "^0.3.40-next.0", + "@backstage/plugin-gcalendar": "^0.3.5-next.0", + "@backstage/plugin-gcp-projects": "^0.3.28-next.0", + "@backstage/plugin-github-actions": "^0.5.9-next.0", + "@backstage/plugin-gocd": "^0.1.15-next.0", + "@backstage/plugin-graphiql": "^0.2.41-next.0", + "@backstage/plugin-home": "^0.4.25-next.0", + "@backstage/plugin-jenkins": "^0.7.8-next.0", + "@backstage/plugin-kafka": "^0.3.9-next.0", + "@backstage/plugin-kubernetes": "^0.7.2-next.0", + "@backstage/plugin-lighthouse": "^0.3.9-next.0", + "@backstage/plugin-newrelic": "^0.3.27-next.0", + "@backstage/plugin-newrelic-dashboard": "^0.2.2-next.0", + "@backstage/plugin-org": "^0.5.9-next.0", + "@backstage/plugin-pagerduty": "0.5.2-next.0", + "@backstage/plugin-permission-react": "^0.4.5-next.0", + "@backstage/plugin-rollbar": "^0.4.9-next.0", + "@backstage/plugin-scaffolder": "^1.6.0-next.0", + "@backstage/plugin-search": "^1.0.2-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/plugin-search-react": "^1.0.2-next.0", + "@backstage/plugin-sentry": "^0.4.2-next.0", + "@backstage/plugin-shortcuts": "^0.3.1-next.0", + "@backstage/plugin-stack-overflow": "^0.1.5-next.0", + "@backstage/plugin-tech-insights": "^0.2.5-next.0", + "@backstage/plugin-tech-radar": "^0.5.16-next.0", + "@backstage/plugin-techdocs": "^1.3.2-next.0", + "@backstage/plugin-techdocs-module-addons-contrib": "^1.0.4-next.0", + "@backstage/plugin-techdocs-react": "^1.0.4-next.0", + "@backstage/plugin-todo": "^0.2.11-next.0", + "@backstage/plugin-user-settings": "^0.4.8-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -69,7 +69,7 @@ "@roadiehq/backstage-plugin-github-insights": "^2.0.0", "@roadiehq/backstage-plugin-github-pull-requests": "^2.0.0", "@roadiehq/backstage-plugin-travis-ci": "^2.0.0", - "@internal/plugin-catalog-customized": "0.0.1", + "@internal/plugin-catalog-customized": "0.0.2-next.0", "history": "^5.0.0", "prop-types": "^15.7.2", "react": "^17.0.2", @@ -80,7 +80,7 @@ "zen-observable": "^0.8.15" }, "devDependencies": { - "@backstage/test-utils": "^1.1.3", + "@backstage/test-utils": "^1.1.4-next.0", "@rjsf/core": "^3.2.1", "@testing-library/cypress": "^8.0.2", "@testing-library/jest-dom": "^5.10.1", diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index a467ef5b7a..c9f9ff8009 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-app-api +## 0.2.1-next.0 + +### Patch Changes + +- de3347ca74: Updated usages of `ServiceFactory`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + ## 0.2.0 ### Minor Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index fc908d107b..0ff017e635 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-app-api", "description": "Core API used by Backstage backend apps", - "version": "0.2.0", + "version": "0.2.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -34,16 +34,16 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-plugin-api": "^0.1.1", - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", - "@backstage/plugin-permission-node": "^0.6.4", + "@backstage/backend-plugin-api": "^0.1.2-next.0", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", + "@backstage/plugin-permission-node": "^0.6.5-next.0", "express": "^4.17.1", "express-promise-router": "^4.1.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist", diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index 6068b179e4..90574a9c22 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-common +## 0.15.1-next.0 + +### Patch Changes + +- 399286d7dd: Workaround support for `swc` instead of `sucrase` +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/config-loader@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.15.0 ### Minor Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 7cdedf0c21..43b1f81b12 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-common", "description": "Common functionality library for Backstage backends", - "version": "0.15.0", + "version": "0.15.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -36,9 +36,9 @@ "dependencies": { "@backstage/cli-common": "^0.1.9", "@backstage/config": "^1.0.1", - "@backstage/config-loader": "^1.1.3", + "@backstage/config-loader": "^1.1.4-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", + "@backstage/integration": "^1.3.1-next.0", "@backstage/types": "^1.0.0", "@google-cloud/storage": "^6.0.0", "@keyv/redis": "^2.2.3", @@ -91,8 +91,8 @@ } }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/archiver": "^5.1.0", "@types/base64-stream": "^1.0.2", "@types/compression": "^1.7.0", diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index 2d80e84fc2..e91d4880c6 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-defaults +## 0.1.1-next.0 + +### Patch Changes + +- de3347ca74: Updated usages of `ServiceFactory`. +- Updated dependencies + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/backend-app-api@0.2.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 1270029909..93b93b08fc 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-defaults", "description": "Backend defaults used by Backstage backend apps", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -33,11 +33,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-app-api": "^0.2.0", - "@backstage/backend-plugin-api": "^0.1.1" + "@backstage/backend-app-api": "^0.2.1-next.0", + "@backstage/backend-plugin-api": "^0.1.2-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index b8706c0e51..5c25b904e2 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,14 @@ # example-backend-next +## 0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/backend-defaults@0.1.1-next.0 + ## 0.0.2 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 056b6c5722..8c24ee30e0 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.2", + "version": "0.0.3-next.0", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,12 +25,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-defaults": "^0.1.0", - "@backstage/plugin-catalog-backend": "^1.3.1", - "@backstage/plugin-scaffolder-backend": "^1.5.0" + "@backstage/backend-defaults": "^0.1.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", + "@backstage/plugin-scaffolder-backend": "^1.6.0-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index 71987fd616..b4fd5482e3 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-plugin-api +## 0.1.2-next.0 + +### Patch Changes + +- eef91a2558: Simplified the `ServiceFactory` type and removed `AnyServiceFactory`. +- 68513f169a: When defining a new `ServiceRef` you can now also include a `defaultFactory`, which will be used to construct instances of the service in case there is no explicit factory defined. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + ## 0.1.1 ### Patch Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 9a4e9ce8a8..35293a820d 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-plugin-api", "description": "Core API used by Backstage backend plugins", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -35,16 +35,16 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/backend-common": "^0.15.0", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", "@types/express": "^4.17.6", "express": "^4.17.1", "winston": "^3.2.1", "winston-transport": "^4.5.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist", diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index 59e5c8ca8a..28017cf3d5 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-tasks +## 0.3.5-next.0 + +### Patch Changes + +- 243533ecdc: Added support to mysql on some raw queries +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.3.4 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 7d8886d77b..f94519525e 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-tasks", "description": "Common distributed task management library for Backstage backends", - "version": "0.3.4", + "version": "0.3.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -33,7 +33,7 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", "@backstage/types": "^1.0.0", @@ -48,8 +48,8 @@ "zod": "^3.9.5" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/cron": "^2.0.0", "wait-for-expect": "^3.0.2" }, diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 2e1b1bea6a..6810133518 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/backend-test-utils +## 0.1.28-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- de3347ca74: Updated usages of `ServiceFactory`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/backend-app-api@0.2.1-next.0 + ## 0.1.27 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 28baf725bd..38b93ccf19 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-test-utils", "description": "Test helpers library for Backstage backends", - "version": "0.1.27", + "version": "0.1.28-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -35,10 +35,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-app-api": "^0.2.0", - "@backstage/backend-plugin-api": "^0.1.1", - "@backstage/cli": "^0.18.1", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-app-api": "^0.2.1-next.0", + "@backstage/backend-plugin-api": "^0.1.2-next.0", + "@backstage/cli": "^0.18.2-next.0", "@backstage/config": "^1.0.1", "better-sqlite3": "^7.5.0", "knex": "^2.0.0", @@ -49,7 +49,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist", diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 670ce31973..f72f5b22f0 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,44 @@ # example-backend +## 0.2.75-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/plugin-kafka-backend@0.2.29-next.0 + - @backstage/plugin-proxy-backend@0.2.30-next.0 + - @backstage/plugin-azure-devops-backend@0.3.15-next.0 + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-tech-insights-node@0.3.4-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/plugin-search-backend-module-pg@0.4.0-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-app-backend@0.3.36-next.0 + - @backstage/plugin-auth-backend@0.15.2-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-code-coverage-backend@0.2.2-next.0 + - @backstage/plugin-graphql-backend@0.1.26-next.0 + - @backstage/plugin-jenkins-backend@0.1.26-next.0 + - @backstage/plugin-permission-backend@0.5.11-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + - @backstage/plugin-rollbar-backend@0.1.33-next.0 + - @backstage/plugin-techdocs-backend@1.2.2-next.0 + - @backstage/plugin-todo-backend@0.1.33-next.0 + - @backstage/plugin-tech-insights-backend@0.5.2-next.0 + - @backstage/plugin-badges-backend@0.1.30-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.2-next.0 + - @backstage/plugin-kubernetes-backend@0.7.2-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.4-next.0 + - @backstage/plugin-search-backend@1.0.2-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.20-next.0 + - example-app@0.2.75-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 0.2.74 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 5226cf3270..37b9a1bf37 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.74", + "version": "0.2.75-next.0", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", @@ -26,40 +26,40 @@ "build-image": "docker build ../.. -f Dockerfile --tag example-backend" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-app-backend": "^0.3.35", - "@backstage/plugin-auth-backend": "^0.15.1", - "@backstage/plugin-auth-node": "^0.2.4", - "@backstage/plugin-azure-devops-backend": "^0.3.14", - "@backstage/plugin-badges-backend": "^0.1.29", - "@backstage/plugin-catalog-backend": "^1.3.1", - "@backstage/plugin-code-coverage-backend": "^0.2.1", - "@backstage/plugin-graphql-backend": "^0.1.25", - "@backstage/plugin-jenkins-backend": "^0.1.25", - "@backstage/plugin-kubernetes-backend": "^0.7.1", - "@backstage/plugin-kafka-backend": "^0.2.28", - "@backstage/plugin-permission-backend": "^0.5.10", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-permission-node": "^0.6.4", - "@backstage/plugin-proxy-backend": "^0.2.29", - "@backstage/plugin-rollbar-backend": "^0.1.32", - "@backstage/plugin-scaffolder-backend": "^1.5.0", - "@backstage/plugin-scaffolder-backend-module-rails": "^0.4.3", - "@backstage/plugin-search-backend": "^1.0.1", - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/plugin-search-backend-node": "^1.0.1", - "@backstage/plugin-search-backend-module-elasticsearch": "^1.0.1", - "@backstage/plugin-search-backend-module-pg": "^0.3.6", - "@backstage/plugin-techdocs-backend": "^1.2.1", - "@backstage/plugin-tech-insights-backend": "^0.5.1", - "@backstage/plugin-tech-insights-node": "^0.3.3", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.19", - "@backstage/plugin-todo-backend": "^0.1.32", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-app-backend": "^0.3.36-next.0", + "@backstage/plugin-auth-backend": "^0.15.2-next.0", + "@backstage/plugin-auth-node": "^0.2.5-next.0", + "@backstage/plugin-azure-devops-backend": "^0.3.15-next.0", + "@backstage/plugin-badges-backend": "^0.1.30-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", + "@backstage/plugin-code-coverage-backend": "^0.2.2-next.0", + "@backstage/plugin-graphql-backend": "^0.1.26-next.0", + "@backstage/plugin-jenkins-backend": "^0.1.26-next.0", + "@backstage/plugin-kubernetes-backend": "^0.7.2-next.0", + "@backstage/plugin-kafka-backend": "^0.2.29-next.0", + "@backstage/plugin-permission-backend": "^0.5.11-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-permission-node": "^0.6.5-next.0", + "@backstage/plugin-proxy-backend": "^0.2.30-next.0", + "@backstage/plugin-rollbar-backend": "^0.1.33-next.0", + "@backstage/plugin-scaffolder-backend": "^1.6.0-next.0", + "@backstage/plugin-scaffolder-backend-module-rails": "^0.4.4-next.0", + "@backstage/plugin-search-backend": "^1.0.2-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/plugin-search-backend-node": "^1.0.2-next.0", + "@backstage/plugin-search-backend-module-elasticsearch": "^1.0.2-next.0", + "@backstage/plugin-search-backend-module-pg": "^0.4.0-next.0", + "@backstage/plugin-techdocs-backend": "^1.2.2-next.0", + "@backstage/plugin-tech-insights-backend": "^0.5.2-next.0", + "@backstage/plugin-tech-insights-node": "^0.3.4-next.0", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.20-next.0", + "@backstage/plugin-todo-backend": "^0.1.33-next.0", "@gitbeaker/node": "^35.1.0", "@octokit/rest": "^19.0.3", "better-sqlite3": "^7.5.0", @@ -76,7 +76,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/dockerode": "^3.3.0", "@types/express": "^4.17.6", "@types/express-serve-static-core": "^4.17.5", diff --git a/packages/catalog-client/CHANGELOG.md b/packages/catalog-client/CHANGELOG.md index 32ad01d0bf..dc8818fd5c 100644 --- a/packages/catalog-client/CHANGELOG.md +++ b/packages/catalog-client/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/catalog-client +## 1.0.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup + ## 1.0.4 ### Patch Changes diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index e8e98d9fd0..81432c8042 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/catalog-client", "description": "An isomorphic client for the catalog backend", - "version": "1.0.4", + "version": "1.0.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,7 +38,7 @@ "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/jest": "^26.0.7", "msw": "^0.45.0" }, diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 40eb5419b3..1310004e8c 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -43,7 +43,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/jest": "^26.0.7", "@types/json-schema": "^7.0.5", "@types/lodash": "^4.14.151", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 4fdab1c48d..f7a1b4432b 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,74 @@ # @backstage/cli +## 0.18.2-next.0 + +### Patch Changes + +- 6ae0f6a719: Switch out `sucrase` for `swc` for transpilation. + + `sucrase` is a little more relaxed when it comes to supporting the ways of mocking in `jest`. You might have to make some changes to your tests to meet the `jest` standard and spec if your tests seems to start failing. + + Mocks that look like this are invalid, and they will throw a reference error in line with the `jest` documentation [here on example 3](https://jestjs.io/docs/es6-class-mocks#calling-jestmock-with-the-module-factory-parameter) + + ```ts + const mockCommandExists = jest.fn(); + jest.mock('command-exists', () => mockCommandExists); + ``` + + You might need to update these mocks to look a little like the following to defer the call to the `jest.fn()` spy until the mock is called. + + ```ts + const mockCommandExists = jest.fn(); + jest.mock( + 'command-exists', + () => + (...args: any[]) => + commandExists(...args), + ); + ``` + + Also, imports are immutable. So it means that you might get some errors when trying to use `jest.spyOn` with starred imports. You might see an error like this: + + ```log + TypeError: Cannot redefine property: executeFrameHandlerStrategy + at Function.defineProperty () + + 20 | import { AuthResolverContext } from '../types'; + 21 | + > 22 | const mockFrameHandler = jest.spyOn( + | ^ + 23 | helpers, + 24 | 'executeFrameHandlerStrategy', + 25 | ) as unknown as jest.MockedFunction< + ``` + + This happens when you try to do `import * as something from './something'` and then `jest.spyOn(something, 'test)`. You will need to add a `jest.mock` call to mock out the required starred import to return `jest.fn()` functions from the start. Something like this fixes the above test: + + ```ts + jest.mock('../../helpers', () => ({ + executeFrameHandlerStrategy: jest.fn(), + })); + ``` + + You can also remove any occurrence of `hot(App)` and any import of `react-hot-loader` if you're using the that package locally, as all this has now been replaced with [React Refresh](https://www.npmjs.com/package/react-refresh) which you will get out of the box with the new CLI. + + **Note** If you're experiencing difficulties with running tests after the migration, please reach out to us on Discord to see if we can help, or raise an issue. But in the meantime you can switch back to the existing behaviour by using the following config in your root `package.json`. + + ```json + "jest": { + "transform": { + "\\.(js|jsx|ts|tsx|mjs|cjs)$": "@backstage/cli/config/jestSucraseTransform.js", + "\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$": "@backstage/cli/config/jestFileTransform.js", + "\\.(yaml)$": "jest-transform-yaml" + } + } + ``` + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/config-loader@1.1.4-next.0 + - @backstage/release-manifests@0.0.6-next.0 + ## 0.18.1 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index bf5948f843..560139c71a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli", "description": "CLI for developing Backstage plugins and apps", - "version": "0.18.1", + "version": "0.18.2-next.0", "private": false, "publishConfig": { "access": "public" @@ -33,9 +33,9 @@ "dependencies": { "@backstage/cli-common": "^0.1.9", "@backstage/config": "^1.0.1", - "@backstage/config-loader": "^1.1.3", + "@backstage/config-loader": "^1.1.4-next.0", "@backstage/errors": "^1.1.0", - "@backstage/release-manifests": "^0.0.5", + "@backstage/release-manifests": "^0.0.6-next.0", "@backstage/types": "^1.0.0", "@manypkg/get-packages": "^1.1.3", "@octokit/request": "^6.0.0", @@ -129,13 +129,13 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@types/diff": "^5.0.0", "@types/express": "^4.17.6", diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md index 484795ce5b..47e2c28c08 100644 --- a/packages/config-loader/CHANGELOG.md +++ b/packages/config-loader/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/config-loader +## 1.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + ## 1.1.3 ### Patch Changes diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 671e304199..ebb7732a6d 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/config-loader", "description": "Config loading functionality used by Backstage backend, and CLI", - "version": "1.1.3", + "version": "1.1.4-next.0", "private": false, "publishConfig": { "access": "public", diff --git a/packages/config/package.json b/packages/config/package.json index eebebf0b59..897a6b6436 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -37,7 +37,7 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@backstage/test-utils": "^1.1.3-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@types/jest": "^26.0.7", "@types/node": "^16.0.0" }, diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 8a14eed4ec..9661484bfa 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/core-app-api +## 1.0.6-next.0 + +### Patch Changes + +- 744fea158b: Added `getSystemIcons()` function to the `AppContext` available through `useApp` that will pull a list of all the icons that have been registered in the App. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + ## 1.0.5 ### Patch Changes diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 1fccec666d..1e54443473 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-app-api", "description": "Core app API used by Backstage apps", - "version": "1.0.5", + "version": "1.0.6-next.0", "private": false, "publishConfig": { "access": "public", @@ -34,7 +34,7 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/types": "^1.0.0", "@backstage/version-bridge": "^1.0.1", "@types/prop-types": "^15.7.3", @@ -49,8 +49,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index c1cd9e33ac..24f200a687 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/core-components +## 0.11.1-next.0 + +### Patch Changes + +- b29c44d895: Adds code to generate ids for headers parsed through the MarkdownContent component. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + ## 0.11.0 ### Minor Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 7b59f8cfd6..74dc89bfc0 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-components", "description": "Core components used by Backstage plugins and apps", - "version": "0.11.0", + "version": "0.11.1-next.0", "private": false, "publishConfig": { "access": "public", @@ -34,7 +34,7 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", "@backstage/theme": "^0.2.16", "@backstage/version-bridge": "^1.0.1", @@ -79,9 +79,9 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/core-app-api": "^1.0.5", - "@backstage/cli": "^0.18.1", - "@backstage/test-utils": "^1.1.3", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md index 807718212c..8d0b6038f7 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/core-plugin-api +## 1.0.6-next.0 + +### Patch Changes + +- 744fea158b: Added `getSystemIcons()` function to the `AppContext` available through `useApp` that will pull a list of all the icons that have been registered in the App. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup + ## 1.0.5 ### Patch Changes diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 573f74d864..20e06593eb 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-plugin-api", "description": "Core API used by Backstage plugins", - "version": "1.0.5", + "version": "1.0.6-next.0", "private": false, "publishConfig": { "access": "public", @@ -47,9 +47,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 51e9fa0987..31422429a3 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,99 @@ # @backstage/create-app +## 0.4.31-next.0 + +### Patch Changes + +- e83de28e36: Fix typo in the documentation +- 208d6780c9: The `packages/backend/Dockerfile` received a couple of updates, it now looks as follows: + + ```Dockerfile + FROM node:16-bullseye-slim + + # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, + # in which case you should also move better-sqlite3 to "devDependencies" in package.json. + RUN apt-get update && \ + apt-get install -y --no-install-recommends libsqlite3-dev python3 build-essential && \ + rm -rf /var/lib/apt/lists/* && \ + yarn config set python /usr/bin/python3 + + # From here on we use the least-privileged `node` user to run the backend. + USER node + WORKDIR /app + + # This switches many Node.js dependencies to production mode. + ENV NODE_ENV production + + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. + # The skeleton contains the package.json of each package in the monorepo, + # and along with yarn.lock and the root package.json, that's enough to run yarn install. + COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ + RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz + + RUN yarn install --frozen-lockfile --production --network-timeout 300000 && rm -rf "$(yarn cache dir)" + + # Then copy the rest of the backend bundle, along with any other files we might want. + COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ + RUN tar xzf bundle.tar.gz && rm bundle.tar.gz + + CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] + ``` + + The two notable changes are that a `USER node` instruction has been added and the ordering of instructions has been changed accordingly. This means that the app will now be running using the least-privileged `node` user. In order for this to work we now need to make sure that all app files are owned by the `node` user, which we do by adding the `--chown=node:node` option to the `COPY` instructions. + + The second change is the addition of `ENV NODE_ENV production`, which ensured that all Node.js modules run in production mode. If you apply this change to an existing app, note that one of the more significant changes is that this switches the log formatting to use the default production format, JSON. Rather than your log lines looking like this: + + ```log + 2022-08-10T11:36:05.478Z catalog info Performing database migration type=plugin + ``` + + They will now look like this: + + ```log + {"level":"info","message":"Performing database migration","plugin":"catalog","service":"backstage","type":"plugin"} + ``` + + If you wish to keep the existing format, you can override this change by applying the following change to `packages/backend/src/index.ts`: + + ```diff + getRootLogger, + + setRootLogger, + + createRootLogger, + + coloredFormat, + useHotMemoize, + ... + ServerTokenManager, + } from '@backstage/backend-common'; + + ... + + async function main() { + + setRootLogger(createRootLogger({ format: coloredFormat })); + + + const config = await loadBackendConfig({ + ``` + +- c0a08fd08c: Added `EntityLinksCard` to the system `EntityPage`. + + For an existing installation where you want to display the links card for entity pages of kind `system` you should make the following adjustment to `packages/app/src/components/catalog/EntityPage.tsx` + + ```diff + const systemPage = ( + ... + + + + + + + + + + - + + + + + ... + ); + ``` + ## 0.4.30 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index be2df5752a..cc20c27a26 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.4.30", + "version": "0.4.31-next.0", "private": false, "publishConfig": { "access": "public" diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 34adb63d3c..fbf7f85378 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/dev-utils +## 1.0.6-next.0 + +### Patch Changes + +- 4c5e85ddf3: Removed the dependency and setup of `react-hot-loader`, since the `@backstage/cli` now uses `swc` with `React Refresh` instead. +- Updated dependencies + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/app-defaults@1.0.6-next.0 + ## 1.0.5 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 9639ffd8fc..062ad64585 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.5", + "version": "1.0.6-next.0", "private": false, "publishConfig": { "access": "public", @@ -33,14 +33,14 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/app-defaults": "^1.0.5", - "@backstage/core-app-api": "^1.0.5", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/app-defaults": "^1.0.6-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/test-utils": "^1.1.3", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -58,7 +58,7 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/jest": "^26.0.7", "@types/node": "^16.0.0" }, diff --git a/packages/errors/package.json b/packages/errors/package.json index 8bd53e0848..b4128b10f4 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -38,7 +38,7 @@ "serialize-error": "^8.0.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/jest": "^26.0.7" }, "files": [ diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index 89fbb56619..ec2865c121 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/integration-react +## 1.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + ## 1.1.3 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index a75d63725b..114ef4879d 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.3", + "version": "1.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,9 +25,9 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration": "^1.3.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration": "^1.3.1-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -38,9 +38,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index 57bb9297ba..43c7b16408 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/integration +## 1.3.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + ## 1.3.0 ### Minor Changes diff --git a/packages/integration/package.json b/packages/integration/package.json index 31b4bbf5f6..702342a79f 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration", "description": "Helpers for managing integrations towards external systems", - "version": "1.3.0", + "version": "1.3.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -43,9 +43,9 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/config-loader": "^1.1.3", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/config-loader": "^1.1.4-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@types/jest": "^26.0.7", "@types/luxon": "^3.0.0", "msw": "^0.45.0" diff --git a/packages/release-manifests/CHANGELOG.md b/packages/release-manifests/CHANGELOG.md index b00e1c5821..e1aad51494 100644 --- a/packages/release-manifests/CHANGELOG.md +++ b/packages/release-manifests/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/release-manifests +## 0.0.6-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + ## 0.0.5 ### Patch Changes diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index 68eef91636..fc20b5c388 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/release-manifests", "description": "Helper library for receiving release manifests", - "version": "0.0.5", + "version": "0.0.6-next.0", "private": false, "main": "src/index.ts", "types": "src/index.ts", @@ -36,7 +36,7 @@ "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/test-utils": "^1.1.3-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "msw": "^0.45.0", "@types/jest": "^26.0.7", "@types/node": "^16.0.0" diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 85300ab0f7..f8e674dafc 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,21 @@ # techdocs-cli-embedded-app +## 0.2.74-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.3.2-next.0 + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/app-defaults@1.0.6-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + ## 0.2.73 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index ea429fa611..e9263da8b5 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,24 +1,24 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.73", + "version": "0.2.74-next.0", "private": true, "backstage": { "role": "frontend" }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^1.0.5", + "@backstage/app-defaults": "^1.0.6-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog": "^1.5.0", - "@backstage/plugin-techdocs": "^1.3.1", - "@backstage/plugin-techdocs-react": "^1.0.3", - "@backstage/test-utils": "^1.1.3", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog": "^1.5.1-next.0", + "@backstage/plugin-techdocs": "^1.3.2-next.0", + "@backstage/plugin-techdocs-react": "^1.0.4-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", @@ -30,7 +30,7 @@ "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 27843fbec5..653564ded0 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,13 @@ # @techdocs/cli +## 1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-techdocs-node@1.3.1-next.0 + ## 1.2.0 ### Minor Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index bb8b10fb6f..4012196076 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,7 +1,7 @@ { "name": "@techdocs/cli", "description": "Utility CLI for managing TechDocs sites in Backstage.", - "version": "1.2.0", + "version": "1.2.1-next.0", "private": false, "publishConfig": { "access": "public" @@ -37,7 +37,7 @@ "techdocs-cli": "bin/techdocs-cli" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/commander": "^2.12.2", "@types/fs-extra": "^9.0.6", "@types/http-proxy": "^1.17.4", @@ -62,11 +62,11 @@ "ext": "ts" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/cli-common": "^0.1.9", "@backstage/config": "^1.0.1", - "@backstage/plugin-techdocs-node": "^1.3.0", + "@backstage/plugin-techdocs-node": "^1.3.1-next.0", "@types/dockerode": "^3.3.0", "commander": "^9.1.0", "dockerode": "^3.3.1", diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 4f15c6a665..1c49cef959 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/test-utils +## 1.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + ## 1.1.3 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 4a42052d7a..d2a22d2e05 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/test-utils", "description": "Utilities to test Backstage plugins and apps.", - "version": "1.1.3", + "version": "1.1.4-next.0", "private": false, "publishConfig": { "access": "public", @@ -34,10 +34,10 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-permission-react": "^0.4.4", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-permission-react": "^0.4.5-next.0", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", @@ -55,7 +55,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "msw": "^0.45.0" diff --git a/packages/theme/package.json b/packages/theme/package.json index 4323549ffb..b2245d5bca 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -36,7 +36,7 @@ "@material-ui/core": "^4.12.2" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/packages/types/package.json b/packages/types/package.json index 697c9f17f3..0893637eb6 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -34,7 +34,7 @@ }, "dependencies": {}, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/zen-observable": "^0.8.0", "zen-observable": "^0.8.15" }, diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index 37d23238ba..4c4d4f94b4 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -37,7 +37,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0" diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index a4ad1edfa4..17fdb9270a 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-adr-backend +## 0.2.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-adr-common@0.2.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 0.2.0 ### Minor Changes diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 08bc593a60..0f18796e5d 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.2.0", + "version": "0.2.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,14 +29,14 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-adr-common": "^0.2.0", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-adr-common": "^0.2.1-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "luxon": "^3.0.0", "marked": "^4.0.14", "winston": "^3.2.1", @@ -44,7 +44,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/marked": "^4.0.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3", diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md index baf239d0ab..63584b41b1 100644 --- a/plugins/adr-common/CHANGELOG.md +++ b/plugins/adr-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-adr-common +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 0.2.0 ### Minor Changes diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json index 76058f8a86..22d73f2677 100644 --- a/plugins/adr-common/package.json +++ b/plugins/adr-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-adr-common", "description": "Common functionalities for the adr plugin", - "version": "0.2.0", + "version": "0.2.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,11 +31,11 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-search-common": "^1.0.0" + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index f3f92199e4..2f7188178d 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-adr +## 0.2.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-adr-common@0.2.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 0.2.0 ### Minor Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index bbbc5b1c34..3adae6db71 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.2.0", + "version": "0.2.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,13 +23,13 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-adr-common": "^0.2.0", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/plugin-search-react": "^1.0.1", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-adr-common": "^0.2.1-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/plugin-search-react": "^1.0.2-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -45,10 +45,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index 01d44965d8..d4f4747062 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-airbrake-backend +## 0.2.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.2.8 ### Patch Changes diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index e808c65371..ba9940b51c 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.2.8", + "version": "0.2.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@types/express": "*", "express": "^4.17.1", @@ -33,7 +33,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index 9aeec07ae3..0a49e619e7 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-airbrake +## 0.3.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/dev-utils@1.0.6-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.3.8 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 6c0e69ce4d..d75b4df303 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.8", + "version": "0.3.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/test-utils": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/app-defaults": "^1.0.5", - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/app-defaults": "^1.0.6-next.0", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index f93b59fbae..ff6a314a04 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-allure +## 0.1.25-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.24 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 7aed659e1d..a336c3deff 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-allure", "description": "A Backstage plugin that integrates with Allure", - "version": "0.1.24", + "version": "0.1.25-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -26,9 +26,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index 10ecbc4def..ee9f335a69 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-analytics-module-ga +## 0.1.20-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.1.19 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 6254c436d7..7425e2a612 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga", - "version": "0.1.19", + "version": "0.1.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,8 +25,8 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -38,10 +38,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 4306582b59..8bbdcc9847 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-apache-airflow +## 0.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 1c8a532a9c..7ef29990ea 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,8 +23,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -36,10 +36,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/api-docs-module-protoc-gen-doc/package.json b/plugins/api-docs-module-protoc-gen-doc/package.json index 925f81219f..3a1f00251c 100644 --- a/plugins/api-docs-module-protoc-gen-doc/package.json +++ b/plugins/api-docs-module-protoc-gen-doc/package.json @@ -37,7 +37,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@testing-library/jest-dom": "^5.16.4", "@types/react": "^16.13.1 || ^17.0.0" }, diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 3d4dae36f1..b70e02a0ea 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-api-docs +## 0.8.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- c8bb0ff8ce: Minor cleanup of the public API surface to reduce the number of warnings +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + ## 0.8.8 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 75d2802de3..ddf87f3ff7 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs", "description": "A Backstage plugin that helps represent API entities in the frontend", - "version": "0.8.8", + "version": "0.8.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,10 +35,10 @@ "dependencies": { "@asyncapi/react-component": "1.0.0-next.40", "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog": "^1.5.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog": "^1.5.1-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -57,10 +57,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index fbe32ec2db..601f2d7864 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-apollo-explorer +## 0.1.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.1.1 ### Patch Changes diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index b860e61900..6d01a37e3e 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apollo-explorer", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", @@ -36,10 +36,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index 33845eb9c7..cc6057464d 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-app-backend +## 0.3.36-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/config-loader@1.1.4-next.0 + ## 0.3.35 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 7ad2b50c52..d6b5c1ea26 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-backend", "description": "A Backstage backend plugin that serves the Backstage frontend app", - "version": "0.3.35", + "version": "0.3.36-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,8 +33,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/config-loader": "^1.1.3", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/config-loader": "^1.1.4-next.0", "@backstage/config": "^1.0.1", "@backstage/types": "^1.0.0", "@types/express": "^4.17.6", @@ -50,8 +50,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@backstage/types": "^1.0.0", "@types/supertest": "^2.0.8", "mock-fs": "^5.1.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index 43460df12f..2a2eef0c41 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend +## 0.15.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + ## 0.15.1 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 3c4b8c3a99..0450509674 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend", "description": "A Backstage backend plugin that handles authentication", - "version": "0.15.1", + "version": "0.15.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,9 +33,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-auth-node": "^0.2.4", - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/plugin-auth-node": "^0.2.5-next.0", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", @@ -76,8 +76,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/express-session": "^1.17.2", diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index c01c24590d..f965e4ac8f 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-node +## 0.2.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 2fd4f470c5..86973e1012 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.2.4", + "version": "0.2.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,7 +23,7 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", "jose": "^4.6.0", @@ -31,7 +31,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "lodash": "^4.17.21", "msw": "^0.45.0", "uuid": "^8.0.0" diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 5c8de9557e..239cf68d52 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,52 @@ # @backstage/plugin-azure-devops-backend +## 0.3.15-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- cb1cfc018b: `createRouter` now requires an additional reader: `UrlReader` argument + + ```diff + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + return createRouter({ + logger: env.logger, + config: env.config, + + reader: env.reader, + }); + } + ``` + + Remember to check if you have already provided these settings previously. + + #### [Azure DevOps] + + ```yaml + # app-config.yaml + azureDevOps: + host: dev.azure.com + token: my-token + organization: my-company + ``` + + #### [Azure Integrations] + + ```yaml + # app-config.yaml + integrations: + azure: + - host: dev.azure.com + token: ${AZURE_TOKEN} + ``` + +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-azure-devops-common@0.3.0-next.0 + ## 0.3.14 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 0b57991cb9..91c2992116 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-backend", - "version": "0.3.14", + "version": "0.3.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,9 +23,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", - "@backstage/plugin-azure-devops-common": "^0.2.4", + "@backstage/plugin-azure-devops-common": "^0.3.0-next.0", "@types/express": "^4.17.6", "azure-devops-node-api": "^11.0.1", "express": "^4.17.1", @@ -36,7 +36,7 @@ "mime-types": "^2.1.27" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", "msw": "^0.45.0" diff --git a/plugins/azure-devops-common/CHANGELOG.md b/plugins/azure-devops-common/CHANGELOG.md index cdd02cc625..8f0c5b9f76 100644 --- a/plugins/azure-devops-common/CHANGELOG.md +++ b/plugins/azure-devops-common/CHANGELOG.md @@ -1,5 +1,58 @@ # @backstage/plugin-azure-devops-common +## 0.3.0-next.0 + +### Minor Changes + +- 6c1c59b96e: Added README card `EntityAzureReadmeCard` for Azure Devops. + + To get the README component working you'll need to do the following two steps: + + 1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: + + ```bash + # From your Backstage root directory + yarn add --cwd packages/app @backstage/plugin-azure-devops + ``` + + 2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: + + ```tsx + // In packages/app/src/components/catalog/EntityPage.tsx + import { + EntityAzureReadmeCard, + isAzureDevOpsAvailable, + } from '@backstage/plugin-azure-devops'; + + // As it is a card, you can customize it the way you prefer + // For example in the Service section + + const overviewContent = ( + + + + + ... + + + + + + + + ); + ``` + + **Notes:** + + - You'll need to add the `EntitySwitch.Case` above from step 2 to all the entity sections you want to see Readme in. For example if you wanted to see Readme when looking at Website entities then you would need to add this to the `websiteEntityPage` section. + - The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation + - The `maxHeight` property on the `EntityAzureReadmeCard` will set the maximum screen size you would like to see, if not set it will default to 100% + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup + ## 0.2.4 ### Patch Changes diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index 40803ae633..2be8c22935 100644 --- a/plugins/azure-devops-common/package.json +++ b/plugins/azure-devops-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-common", - "version": "0.2.4", + "version": "0.3.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,7 +32,7 @@ "clean": "backstage-cli package clean" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index f108dd1424..85b3800c30 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,64 @@ # @backstage/plugin-azure-devops +## 0.2.0-next.0 + +### Minor Changes + +- 6c1c59b96e: Added README card `EntityAzureReadmeCard` for Azure Devops. + + To get the README component working you'll need to do the following two steps: + + 1. First we need to add the @backstage/plugin-azure-devops package to your frontend app: + + ```bash + # From your Backstage root directory + yarn add --cwd packages/app @backstage/plugin-azure-devops + ``` + + 2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: + + ```tsx + // In packages/app/src/components/catalog/EntityPage.tsx + import { + EntityAzureReadmeCard, + isAzureDevOpsAvailable, + } from '@backstage/plugin-azure-devops'; + + // As it is a card, you can customize it the way you prefer + // For example in the Service section + + const overviewContent = ( + + + + + ... + + + + + + + + ); + ``` + + **Notes:** + + - You'll need to add the `EntitySwitch.Case` above from step 2 to all the entity sections you want to see Readme in. For example if you wanted to see Readme when looking at Website entities then you would need to add this to the `websiteEntityPage` section. + - The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation + - The `maxHeight` property on the `EntityAzureReadmeCard` will set the maximum screen size you would like to see, if not set it will default to 100% + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/plugin-azure-devops-common@0.3.0-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.24 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index af2e47532f..d80e01fbe9 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.1.24", + "version": "0.2.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,11 +31,11 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-azure-devops-common": "^0.2.4", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-azure-devops-common": "^0.3.0-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index c9730194af..f26dab77f3 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-badges-backend +## 0.1.30-next.0 + +### Patch Changes + +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + ## 0.1.29 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index e642121802..de173d3b46 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges-backend", "description": "A Backstage backend plugin that generates README badges for your entities", - "version": "0.1.29", + "version": "0.1.30-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,8 +34,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", @@ -48,7 +48,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index 534c433781..5f59e32bbc 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-badges +## 0.2.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.2.32 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 522b860c47..8a850e321e 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges", "description": "A Backstage plugin that generates README badges for your entities", - "version": "0.2.32", + "version": "0.2.33-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,10 +31,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -46,10 +46,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index d607584548..b6cec7bc0d 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-bazaar-backend +## 0.1.20-next.0 + +### Patch Changes + +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-test-utils@0.1.28-next.0 + ## 0.1.19 ### Patch Changes diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 85539c6dab..340a261a97 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.1.19", + "version": "0.1.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,8 +23,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-test-utils": "^0.1.27", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-test-utils": "^0.1.28-next.0", "@backstage/config": "^1.0.1", "@types/express": "^4.17.6", "express": "^4.17.1", @@ -34,7 +34,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index c1c9f91eed..ffb5d62bb3 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-bazaar +## 0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/cli@0.18.2-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + ## 0.1.23 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index db2b72f920..4d39f92a09 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.1.23", + "version": "0.1.24-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,13 +24,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/cli": "^0.18.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog": "^1.5.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog": "^1.5.1-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@date-io/luxon": "1.x", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -47,8 +47,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", "@testing-library/jest-dom": "^5.10.1", "cross-fetch": "^3.1.5" }, diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md index e6c2f366d6..4c31b9fccd 100644 --- a/plugins/bitbucket-cloud-common/CHANGELOG.md +++ b/plugins/bitbucket-cloud-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-bitbucket-cloud-common +## 0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/integration@1.3.1-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index c2c8534013..217db60c1e 100644 --- a/plugins/bitbucket-cloud-common/package.json +++ b/plugins/bitbucket-cloud-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitbucket-cloud-common", "description": "Common functionalities for bitbucket-cloud plugins", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -28,11 +28,11 @@ "update-models": "yarn refresh-schema && yarn generate-models && yarn reduce-models" }, "dependencies": { - "@backstage/integration": "^1.3.0", + "@backstage/integration": "^1.3.1-next.0", "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@openapitools/openapi-generator-cli": "^2.4.26", "msw": "^0.45.0", "ts-morph": "^15.0.0" diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index 8fd4113dd2..531efcf02d 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-bitrise +## 0.1.36-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.35 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 7daf3c48fb..558cf618b3 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitrise", "description": "A Backstage plugin that integrates towards Bitrise", - "version": "0.1.35", + "version": "0.1.36-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,9 +25,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index ab7ac4b3ac..8f9db30419 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 5b4eefb70b..a2f7c499dd 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", "description": "A Backstage catalog backend module that helps integrate towards AWS", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "@backstage/types": "^1.0.0", "aws-sdk": "^2.840.0", "lodash": "^4.17.21", @@ -48,7 +48,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151", "aws-sdk-mock": "^5.2.1", "yaml": "^2.0.0" diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index d7f0d022ce..fa502fe75a 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 9cd034bc51..ccb6985475 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", "description": "A Backstage catalog backend module that helps integrate towards Azure", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", "msw": "^0.45.0", @@ -48,8 +48,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index 2586ee3a5a..17a73fc25c 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 83a33bc23d..4d9da39c66 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,18 +33,18 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/config": "^1.0.1", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-bitbucket-cloud-common": "^0.1.2", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-bitbucket-cloud-common": "^0.1.3-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "uuid": "^8.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "msw": "^0.45.0" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index 216de9ff65..8fcfee0ba5 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.1.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index d3ffc0a946..8facc9cceb 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-server", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,20 +32,20 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/catalog-model": "^1.0.1", "@backstage/config": "^1.0.0", "@backstage/errors": "^1.0.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "cross-fetch": "^3.1.5", "uuid": "^8.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "msw": "^0.45.0" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md index 1f1761bc71..e7bebee4b7 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.0 + ## 0.2.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index e67d1267f4..36b669c81d 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.2", + "version": "0.2.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-bitbucket-cloud-common": "^0.1.2", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-bitbucket-cloud-common": "^0.1.3-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", "msw": "^0.45.0", @@ -47,8 +47,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index b4292da75c..73f86afd2f 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index b068709b96..b81603232c 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gerrit", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -28,13 +28,13 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "fs-extra": "10.1.0", "msw": "^0.45.0", "node-fetch": "^2.6.7", @@ -42,8 +42,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/fs-extra": "^9.0.1" }, "files": [ diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index 2e9c03529b..72fb0d52df 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-github +## 0.1.7-next.0 + +### Patch Changes + +- 3c4a388537: New experimental alpha exports for use with the upcoming backend system. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 4c9202e6f5..9dade48c04 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github", "description": "A Backstage catalog backend module that helps integrate towards GitHub", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,15 +34,15 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", - "@backstage/backend-plugin-api": "^0.1.1", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", + "@backstage/backend-plugin-api": "^0.1.2-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", - "@backstage/plugin-catalog-node": "^1.0.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", + "@backstage/plugin-catalog-node": "^1.0.2-next.0", "@backstage/types": "^1.0.0", "@octokit/graphql": "^5.0.0", "lodash": "^4.17.21", @@ -52,8 +52,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index e3f269514b..dbd243050e 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index d06cc6f429..0146c7af45 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", "description": "A Backstage catalog backend module that helps integrate towards GitLab", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", "msw": "^0.45.0", @@ -48,8 +48,8 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151", "@types/uuid": "^8.0.0" }, diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 8e41d6325b..dec2c7a657 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.3-next.0 + +### Patch Changes + +- c54fcea9af: Now the `searchStream` method in LDAP client awaits the callbacks +- Updated dependencies + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + ## 0.5.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 1de6cbd331..1244605ff9 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", "description": "A Backstage catalog backend module that helps integrate towards LDAP", - "version": "0.5.2", + "version": "0.5.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,11 +33,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "@backstage/types": "^1.0.0", "@types/ldapjs": "^2.2.0", "ldapjs": "^2.2.0", @@ -46,7 +46,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index f914f83f00..8da7b81927 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.4.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 4c82b955fc: Fix typo +- Updated dependencies + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + ## 0.4.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index c12f1bfaf5..835a9e2846 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", - "version": "0.4.1", + "version": "0.4.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,10 +34,10 @@ }, "dependencies": { "@azure/identity": "^2.1.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/plugin-catalog-backend": "^1.3.1", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", "@microsoft/microsoft-graph-types": "^2.6.0", "@types/node-fetch": "^2.5.12", "lodash": "^4.17.21", @@ -48,9 +48,9 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151", "msw": "^0.45.0" }, diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index 660fbd4148..692239989b 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + ## 0.1.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index ce08fcf4d3..ecf2a6b756 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,19 +34,19 @@ }, "dependencies": { "@apidevtools/swagger-parser": "^10.1.0", - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", - "@backstage/plugin-catalog-node": "^1.0.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", + "@backstage/plugin-catalog-node": "^1.0.2-next.0", "@backstage/types": "^1.0.0", "winston": "^3.2.1", "yaml": "^2.1.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "openapi-types": "^12.0.0" }, "files": [ diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index bc287ad98a..9810c789d7 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-catalog-backend +## 1.3.2-next.0 + +### Patch Changes + +- 243533ecdc: Added support to mysql on some raw queries +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 62788b2ee8: The experimental `CatalogProcessingExtensionPoint` now accepts multiple providers and processors at once. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + - @backstage/plugin-scaffolder-common@1.2.0-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.3.1 ### Patch Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index e537678bde..f90b051a75 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend", "description": "The Backstage backend plugin that provides the Backstage catalog", - "version": "1.3.1", + "version": "1.3.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,19 +34,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-plugin-api": "^0.1.1", - "@backstage/plugin-catalog-node": "^1.0.1", - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-plugin-api": "^0.1.2-next.0", + "@backstage/plugin-catalog-node": "^1.0.2-next.0", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-permission-node": "^0.6.4", - "@backstage/plugin-scaffolder-common": "^1.1.2", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-permission-node": "^0.6.5-next.0", + "@backstage/plugin-scaffolder-common": "^1.2.0-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "@backstage/types": "^1.0.0", "@types/express": "^4.17.6", "codeowners-utils": "^1.0.2", @@ -70,10 +70,10 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-search-backend-node": "1.0.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-search-backend-node": "1.0.2-next.0", "@types/core-js": "^2.5.4", "@types/git-url-parse": "^9.0.0", "@types/lodash": "^4.14.151", diff --git a/plugins/catalog-common/CHANGELOG.md b/plugins/catalog-common/CHANGELOG.md index b3e150edc8..45d1e9bbec 100644 --- a/plugins/catalog-common/CHANGELOG.md +++ b/plugins/catalog-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-catalog-common +## 1.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.0.5 ### Patch Changes diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 09911048ee..835fdb411e 100644 --- a/plugins/catalog-common/package.json +++ b/plugins/catalog-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-common", "description": "Common functionalities for the catalog plugin", - "version": "1.0.5", + "version": "1.0.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-search-common": "^1.0.0" + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist", diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md index 7d4ce71cb2..d8c95242db 100644 --- a/plugins/catalog-customized/CHANGELOG.md +++ b/plugins/catalog-customized/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-catalog-customized +## 0.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + ## 0.0.1 ### Patch Changes diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json index 747897da41..6513b62d53 100644 --- a/plugins/catalog-customized/package.json +++ b/plugins/catalog-customized/package.json @@ -1,7 +1,7 @@ { "name": "@internal/plugin-catalog-customized", "description": "The internal Backstage Customizable plugin for browsing the Backstage catalog", - "version": "0.0.1", + "version": "0.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,8 +34,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-catalog": "^1.5.0", - "@backstage/plugin-catalog-react": "^1.1.3" + "@backstage/plugin-catalog": "^1.5.1-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0" }, "devDependencies": { "@types/react": "^16.13.1 || ^17.0.0" diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 398aec357f..380d4610ab 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-graph +## 0.2.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.2.20 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 14f5aecb0d..d74c10b50a 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.2.20", + "version": "0.2.21-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -45,11 +45,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/plugin-catalog": "^1.5.0", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/plugin-catalog": "^1.5.1-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@backstage/types": "^1.0.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", diff --git a/plugins/catalog-graphql/CHANGELOG.md b/plugins/catalog-graphql/CHANGELOG.md index 3f2ffd4f64..92da5866ca 100644 --- a/plugins/catalog-graphql/CHANGELOG.md +++ b/plugins/catalog-graphql/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-catalog-graphql +## 0.3.13-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + ## 0.3.12 ### Patch Changes diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 533d07ac1e..af85222603 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-graphql", "description": "An experimental Backstage catalog GraphQL module", - "version": "0.3.12", + "version": "0.3.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -46,8 +46,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@graphql-codegen/cli": "^2.3.1", "@graphql-codegen/graphql-modules-preset": "^2.3.2", "@graphql-codegen/typescript": "^2.4.2", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index bbed459737..7a157d4bd6 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-import +## 0.8.12-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.8.11 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 63120c05b0..3e02888b94 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-import", "description": "A Backstage plugin the helps you import entities into your catalog", - "version": "0.8.11", + "version": "0.8.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,15 +34,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -60,10 +60,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index 04b65bb4ba..ac0e62054c 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-catalog-node +## 1.0.2-next.0 + +### Patch Changes + +- 62788b2ee8: The experimental `CatalogProcessingExtensionPoint` now accepts multiple providers and processors at once. +- Updated dependencies + - @backstage/backend-plugin-api@0.1.2-next.0 + ## 1.0.1 ### Patch Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 08f61b699c..4513f8ab2b 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-node", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", - "version": "1.0.1", + "version": "1.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,14 +25,14 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-plugin-api": "^0.1.1", + "@backstage/backend-plugin-api": "^0.1.2-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/errors": "1.1.0", "@backstage/types": "^1.0.0" }, "devDependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/cli": "^0.18.1" + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 964e1e0017..5176b633ba 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-react +## 1.1.4-next.0 + +### Patch Changes + +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + ## 1.1.3 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 08987df622..291def38c6 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.1.3", + "version": "1.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,15 +34,15 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-permission-react": "^0.4.4", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-permission-react": "^0.4.5-next.0", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@backstage/version-bridge": "^1.0.1", @@ -63,11 +63,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-scaffolder-common": "^1.1.2", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-scaffolder-common": "^1.2.0-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 578b51c61b..cc178e78c5 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog +## 1.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.5.0 ### Minor Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index ba20f0d285..5465814ef9 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog", "description": "The Backstage plugin for browsing the Backstage catalog", - "version": "1.5.0", + "version": "1.5.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,16 +34,16 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/plugin-search-react": "^1.0.1", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/plugin-search-react": "^1.0.2-next.0", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", @@ -61,11 +61,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/plugin-permission-react": "^0.4.4", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/plugin-permission-react": "^0.4.5-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index 163776416b..4846df3e12 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-cicd-statistics@0.1.11-next.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index b034b48177..294b36eacd 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics-module-gitlab", "description": "CI/CD Statistics plugin module; Gitlab CICD", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,16 +29,16 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/plugin-cicd-statistics": "^0.1.10", + "@backstage/plugin-cicd-statistics": "^0.1.11-next.0", "@gitbeaker/browser": "^35.6.0", "@gitbeaker/core": "^35.6.0", "luxon": "^3.0.0", "p-limit": "^4.0.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/catalog-model": "^1.1.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index 268e32b825..f8d3c66ca5 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-cicd-statistics +## 0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.10 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 10e5e5ea38..288416d3d5 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", - "version": "0.1.10", + "version": "0.1.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,8 +38,8 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@date-io/luxon": "^1.3.13", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.11.2", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index b76be5b5b2..365ffd1677 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-circleci +## 0.3.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.3.8 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index c1ab1d2141..23334570a2 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-circleci", "description": "A Backstage plugin that integrates towards Circle CI", - "version": "0.3.8", + "version": "0.3.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,9 +36,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -55,10 +55,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index 18ebdec1df..3132f88ed2 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-cloudbuild +## 0.3.9-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.3.8 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index f55b942543..ac65694c74 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cloudbuild", "description": "A Backstage plugin that integrates towards Google Cloud Build", - "version": "0.3.8", + "version": "0.3.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,9 +35,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -52,10 +52,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index 6202bf67a3..b360bea1ec 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-code-climate +## 0.1.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 70b990943e..3631017c94 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-code-climate", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,9 +24,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -40,9 +40,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index 0d07616343..f2da88d456 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-code-coverage-backend +## 0.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 0d03994a92..83a89ba25f 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage-backend", "description": "A Backstage backend plugin that helps you keep track of your code coverage", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", + "@backstage/integration": "^1.3.1-next.0", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -39,7 +39,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/express-xml-bodyparser": "^0.3.2", "@types/supertest": "^2.0.8", "msw": "^0.45.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index 9e4282b28a..b907d5fb0b 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-code-coverage +## 0.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 2b7d10ec0b..62aaf4c5ba 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage", "description": "A Backstage plugin that helps you keep track of your code coverage", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -26,10 +26,10 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -46,10 +46,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index f753f291f7..b549eb2222 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-codescene +## 0.1.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 2f6a6f0c92..af2f380a26 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,8 +23,8 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.10", @@ -38,10 +38,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index f69905cce2..88b8bfebd6 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-config-schema +## 0.1.32-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.1.31 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index e1fb598c7f..0437eff613 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-config-schema", "description": "A Backstage plugin that lets you browse the configuration schema of your app", - "version": "0.1.31", + "version": "0.1.32-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,8 +25,8 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", @@ -41,10 +41,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cost-insights-common/package.json b/plugins/cost-insights-common/package.json index 03d3b11ea8..ef28594488 100644 --- a/plugins/cost-insights-common/package.json +++ b/plugins/cost-insights-common/package.json @@ -34,7 +34,7 @@ }, "dependencies": {}, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index 080f2e1f41..ece5960fd7 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cost-insights +## 0.11.31-next.0 + +### Patch Changes + +- 9318bf15d4: The `CostInsightsHeader`component now uses group names if available +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.11.30 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 52d33c83d9..a737688d74 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights", "description": "A Backstage plugin that helps you keep track of your cloud spend", - "version": "0.11.30", + "version": "0.11.31-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,8 +36,8 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/plugin-cost-insights-common": "^0.1.1", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", @@ -61,10 +61,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index 08a98daa2e..f07258752e 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-dynatrace +## 0.2.0-next.0 + +### Minor Changes + +- e44c0b3811: New features: + + - Some visual improvements to the table that displays Problems + - Added support for viewing recent Synthetics results using + - Added some additional linking to the configured Dynatrace instance + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 3ae4d60bc1..93bc1911cc 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "0.1.2", + "version": "0.2.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,8 +23,8 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", @@ -33,14 +33,14 @@ "react-use": "^17.2.4" }, "peerDependencies": { - "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index d541b6e65d..ba33b2f29d 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-todo-list-backend +## 1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + ## 1.0.4 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 8b3e7877c5..e95436b632 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-backend", - "version": "1.0.4", + "version": "1.0.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-auth-node": "^0.2.4", + "@backstage/plugin-auth-node": "^0.2.5-next.0", "@types/express": "^4.17.6", "cross-fetch": "^3.1.5", "express": "^4.17.1", @@ -36,7 +36,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "msw": "^0.45.0", diff --git a/plugins/example-todo-list-common/CHANGELOG.md b/plugins/example-todo-list-common/CHANGELOG.md index d624c2f6a6..ed40a99c3e 100644 --- a/plugins/example-todo-list-common/CHANGELOG.md +++ b/plugins/example-todo-list-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @internal/plugin-todo-list-common +## 1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 + ## 1.0.3 ### Patch Changes diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json index 0783ec5641..979ea61c36 100644 --- a/plugins/example-todo-list-common/package.json +++ b/plugins/example-todo-list-common/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-common", - "version": "1.0.3", + "version": "1.0.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,13 +23,13 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.3" + "@backstage/plugin-permission-common": "^0.6.4-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", - "@backstage/core-app-api": "^1.0.5-next.0", - "@backstage/dev-utils": "^1.0.5-next.0", - "@backstage/test-utils": "^1.1.3-next.0", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@types/node": "^16.11.26", "msw": "^0.45.0", "cross-fetch": "^3.1.5" diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 3d637910de..b096ccfa4e 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-todo-list +## 1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 1.0.4 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index db168683a2..37e57c1467 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.4", + "version": "1.0.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,8 +24,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -36,10 +36,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/explore-react/CHANGELOG.md b/plugins/explore-react/CHANGELOG.md index b4c5547d9f..c819d6be7a 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-explore-react +## 0.0.21-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + ## 0.0.20 ### Patch Changes diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 9a20b74af2..625a6d6947 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore-react", "description": "A frontend library for Backstage plugins that want to interact with the explore plugin", - "version": "0.0.20", + "version": "0.0.21-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,12 +33,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-plugin-api": "^1.0.5" + "@backstage/core-plugin-api": "^1.0.6-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index 96813c08ca..39dd8e0812 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-explore +## 0.3.40-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-explore-react@0.0.21-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.3.39 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 9ac2c08e48..db91907e25 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore", "description": "A Backstage plugin for building an exploration page of your software ecosystem", - "version": "0.3.39", + "version": "0.3.40-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,10 +35,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-explore-react": "^0.0.20", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-explore-react": "^0.0.21-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index 2af1f5ffe3..238f43d7de 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-firehydrant +## 0.1.26-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.25 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 81d71c24c0..b426e8db08 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.1.25", + "version": "0.1.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,9 +25,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -39,10 +39,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index 8a7e37e0eb..59fc0986eb 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-fossa +## 0.2.41-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.2.40 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index ccc98265b4..15cbb078ac 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-fossa", "description": "A Backstage plugin that integrates towards FOSSA", - "version": "0.2.40", + "version": "0.2.41-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,10 +36,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index 946aae643a..7c93731f47 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gcalendar +## 0.3.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.3.4 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index 30f3a4f00d..f46660f942 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.4", + "version": "0.3.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index c7ab79eada..39a1dd7235 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gcp-projects +## 0.3.28-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.3.27 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 14c0b6ed15..56c68effee 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gcp-projects", "description": "A Backstage plugin that helps you manage projects in GCP", - "version": "0.3.27", + "version": "0.3.28-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,8 +34,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 4613940252..8544b6b42f 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-git-release-manager +## 0.3.22-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.3.21 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index a6d91f9844..b6c95e3f79 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-git-release-manager", "description": "A Backstage plugin that helps you manage releases in git", - "version": "0.3.21", + "version": "0.3.22-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,9 +24,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration": "^1.3.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration": "^1.3.1-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index cb3f73d4cb..dac9fea3ea 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-github-actions +## 0.5.9-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.5.8 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 634b745f2f..18adf36085 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.5.8", + "version": "0.5.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,10 +37,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -55,10 +55,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 0e331108a3..578926915f 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-github-deployments +## 0.1.40-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.39 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index bacd3d9574..414d5fa350 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-deployments", "description": "A Backstage plugin that integrates towards GitHub Deployments", - "version": "0.1.39", + "version": "0.1.40-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,12 +25,12 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index a85982820d..ad390bb860 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-github-issues +## 0.1.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index 712f0d81c9..b0c8b01457 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-github-issues", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,11 +23,11 @@ }, "dependencies": { "@backstage/catalog-model": "^1.0.3", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.9.1", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@spotify/prettier-config": "^14.0.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 8ff761dfc3..77f63cc5e7 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 564753343c..1b57aaddcf 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-pull-requests-board", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,10 +36,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -49,9 +49,9 @@ "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index 83407f23b7..1f96c14e96 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gitops-profiles +## 0.3.27-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.3.26 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index ce3db0e4d0..23796ad3e9 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gitops-profiles", "description": "A Backstage plugin that helps you manage GitOps profiles", - "version": "0.3.26", + "version": "0.3.27-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,8 +35,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -48,10 +48,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index 62f1019c62..c48d6b00be 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gocd +## 0.1.15-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.14 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 2d088cb4da..596d9cd1f0 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gocd", "description": "A Backstage plugin that integrates towards GoCD", - "version": "0.1.14", + "version": "0.1.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,10 +32,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index dad0b78969..5b58164556 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphiql +## 0.2.41-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.2.40 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index f8dfc5696d..a78ba4d5d7 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphiql", "description": "Backstage plugin for browsing GraphQL APIs", - "version": "0.2.40", + "version": "0.2.41-next.0", "private": false, "publishConfig": { "access": "public", @@ -34,8 +34,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index 88f7454741..14153d3075 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-backend +## 0.1.26-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-graphql@0.3.13-next.0 + ## 0.1.25 ### Patch Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 86c8404683..4944d1d016 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-backend", "description": "An experimental Backstage backend plugin for GraphQL", - "version": "0.1.25", + "version": "0.1.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", - "@backstage/plugin-catalog-graphql": "^0.3.12", + "@backstage/plugin-catalog-graphql": "^0.3.13-next.0", "@graphql-tools/schema": "^9.0.0", "@types/express": "^4.17.6", "apollo-server": "^3.0.0", @@ -51,7 +51,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "msw": "^0.45.0", "supertest": "^6.1.3" diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 8a340590ed..fc9aeda1e2 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-home +## 0.4.25-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-stack-overflow@0.1.5-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.4.24 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 79f6a9ae4f..e02d6d3e34 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.4.24", + "version": "0.4.25-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,10 +36,10 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-stack-overflow": "^0.1.4", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-stack-overflow": "^0.1.5-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index 83649c4010..97b93d21db 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-ilert +## 0.1.35-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.34 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 8de9beaf43..b0d8ac653b 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-ilert", "description": "A Backstage plugin that integrates towards iLert", - "version": "0.1.34", + "version": "0.1.35-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,10 +25,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@date-io/luxon": "1.x", "@material-ui/core": "^4.12.2", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index b07e224d2a..16f90c5291 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-jenkins-backend +## 0.1.26-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-jenkins-common@0.1.8-next.0 + ## 0.1.25 ### Patch Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 0d240c077b..af97fec891 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins-backend", "description": "A Backstage backend plugin that integrates towards Jenkins", - "version": "0.1.25", + "version": "0.1.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,14 +25,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-auth-node": "^0.2.4", - "@backstage/plugin-jenkins-common": "^0.1.7", - "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-auth-node": "^0.2.5-next.0", + "@backstage/plugin-jenkins-common": "^0.1.8-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -42,7 +42,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/jenkins": "^0.23.1", "@types/supertest": "^2.0.8", "msw": "^0.45.0", diff --git a/plugins/jenkins-common/CHANGELOG.md b/plugins/jenkins-common/CHANGELOG.md index a284687d69..1eedf680d5 100644 --- a/plugins/jenkins-common/CHANGELOG.md +++ b/plugins/jenkins-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-jenkins-common +## 0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + ## 0.1.7 ### Patch Changes diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json index 6a58de3601..2f92b0ff4c 100644 --- a/plugins/jenkins-common/package.json +++ b/plugins/jenkins-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-jenkins-common", - "version": "0.1.7", + "version": "0.1.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,11 +22,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-permission-common": "^0.6.3" + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index 6c10aef068..7e865f8254 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-jenkins +## 0.7.8-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-jenkins-common@0.1.8-next.0 + ## 0.7.7 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 41fef5fcad..6d53c7fc78 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins", "description": "A Backstage plugin that integrates towards Jenkins", - "version": "0.7.7", + "version": "0.7.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,11 +36,11 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-jenkins-common": "^0.1.7", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-jenkins-common": "^0.1.8-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -54,10 +54,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index ce42cd1202..6dd2737b9a 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-kafka-backend +## 0.2.29-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.2.28 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index aaba4b1abe..7ab9076be9 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka-backend", "description": "A Backstage backend plugin that integrates towards Kafka", - "version": "0.2.28", + "version": "0.2.29-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,7 +35,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", @@ -47,7 +47,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/jest-when": "^3.5.0", "@types/lodash": "^4.14.151", "jest-when": "^3.1.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index 344f591932..331b4665d5 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kafka +## 0.3.9-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.3.8 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index c74a769df6..0dfb4a2134 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka", "description": "A Backstage plugin that integrates towards Kafka", - "version": "0.3.8", + "version": "0.3.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -27,9 +27,9 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -41,10 +41,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index f4e98a4152..17be0c85b0 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-kubernetes-backend +## 0.7.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + ## 0.7.1 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 6a894d8820..52c1a53404 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-backend", "description": "A Backstage backend plugin that integrates towards Kubernetes", - "version": "0.7.1", + "version": "0.7.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,12 +36,12 @@ }, "dependencies": { "@azure/identity": "^2.0.4", - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-auth-node": "^0.2.4", + "@backstage/plugin-auth-node": "^0.2.5-next.0", "@backstage/plugin-kubernetes-common": "^0.4.1", "@google-cloud/container": "^4.0.0", "@kubernetes/client-node": "^0.17.0", @@ -63,7 +63,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/aws4": "^1.5.1", "aws-sdk-mock": "^5.2.1", "supertest": "^6.1.3" diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index 16d3e7d61b..1345d4ff59 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -42,7 +42,7 @@ "@kubernetes/client-node": "^0.17.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "jest": { "roots": [ diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index 546d6a1912..4f4475a4cf 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kubernetes +## 0.7.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.7.1 ### Patch Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index f481ea0dec..41be1bdf77 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes", "description": "A Backstage plugin that integrates towards Kubernetes", - "version": "0.7.1", + "version": "0.7.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,9 +36,9 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/plugin-kubernetes-common": "^0.4.1", "@backstage/theme": "^0.2.16", "@kubernetes/client-node": "^0.17.0", @@ -57,10 +57,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index 522ef9d0d5..afdb239ee3 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-lighthouse +## 0.3.9-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.3.8 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 9bdc9746f6..720c8a3a09 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse", "description": "A Backstage plugin that integrates towards Lighthouse", - "version": "0.3.8", + "version": "0.3.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,9 +37,9 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index 431fcb4a33..f72490b834 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 2644524e32..c7a07b9431 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,18 +24,18 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", "@testing-library/jest-dom": "^5.10.1", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5" diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index 11dc6139db..42a8109495 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-newrelic +## 0.3.27-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.3.26 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 0b28a72ad9..7e7876f212 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-newrelic", "description": "A Backstage plugin that integrates towards New Relic", - "version": "0.3.26", + "version": "0.3.27-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,8 +35,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index f67be53874..5e107487ff 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-org +## 0.5.9-next.0 + +### Patch Changes + +- ab6650ede9: Added an edit button to the `UserProfileCard` that is enabled when the `backstage.io/edit-url` is present, this matches how the `GroupProfileCard` works +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.5.8 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index 17a9b07226..bc871ac480 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.5.8", + "version": "0.5.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,9 +30,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -48,11 +48,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/catalog-client": "^1.0.4", - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/catalog-client": "^1.0.5-next.0", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index 6e4e062402..21253e8e5b 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-pagerduty +## 0.5.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.5.1 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 0f317b0fa4..714b67d879 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.5.1", + "version": "0.5.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,10 +35,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index 3652e42d0a..86f3d6fafc 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-periskop-backend +## 0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index 5c635155bb..a52eefdf35 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,7 +24,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@types/express": "*", "cross-fetch": "^3.0.6", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "msw": "^0.45.0", "supertest": "^6.1.6" diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index 261af5f7f7..10583824d2 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-periskop +## 0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 98beac55c8..6c15d694ec 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -26,10 +26,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -42,10 +42,10 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 45c37afe27..1ca613259b 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-permission-backend +## 0.5.11-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + ## 0.5.10 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index f70910099d..114f115e67 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend", - "version": "0.5.10", + "version": "0.5.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,12 +22,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-auth-node": "^0.2.4", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-permission-node": "^0.6.4", + "@backstage/plugin-auth-node": "^0.2.5-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-permission-node": "^0.6.5-next.0", "@types/express": "*", "dataloader": "^2.0.0", "express": "^4.17.1", @@ -39,7 +39,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/lodash": "^4.14.151", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", diff --git a/plugins/permission-common/CHANGELOG.md b/plugins/permission-common/CHANGELOG.md index 0adc62a332..91b6e41005 100644 --- a/plugins/permission-common/CHANGELOG.md +++ b/plugins/permission-common/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-permission-common +## 0.6.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. + ## 0.6.3 ### Patch Changes diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index 373c89a4cf..c9667ec620 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-common", "description": "Isomorphic types and client for Backstage permissions and authorization", - "version": "0.6.3", + "version": "0.6.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { @@ -48,7 +48,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/jest": "^26.0.7", "msw": "^0.45.0" } diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index 924cb098ce..848252cf28 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-permission-node +## 0.6.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + ## 0.6.4 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 0657b91a80..150a9aabdf 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-node", "description": "Common permission and authorization utilities for backend plugins", - "version": "0.6.4", + "version": "0.6.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,18 +33,18 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-auth-node": "^0.2.4", - "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-auth-node": "^0.2.5-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "msw": "^0.45.0", "supertest": "^6.1.3" diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md index 3215aa7b90..b137655708 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-permission-react +## 0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + ## 0.4.4 ### Patch Changes diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index c0a7084f4b..86b7f5297d 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-react", - "version": "0.4.4", + "version": "0.4.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,8 +32,8 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", "cross-fetch": "^3.1.5", "react-router": "6.0.0-beta.0", "react-use": "^17.2.4", @@ -44,8 +44,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@types/jest": "^26.0.7" diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index c80a754839..d3ad7c192f 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-proxy-backend +## 0.2.30-next.0 + +### Patch Changes + +- f6be17460d: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.2.29 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 3bc6752d00..8c5ec006a1 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-proxy-backend", "description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend", - "version": "0.2.29", + "version": "0.2.30-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,7 +32,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@types/express": "^4.17.6", "express": "^4.17.1", @@ -46,7 +46,7 @@ "yup": "^0.32.9" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index 3e61d541a4..cb28aeb015 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-rollbar-backend +## 0.1.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.1.32 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index f8965df8f0..99fd5d81e8 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar-backend", "description": "A Backstage backend plugin that integrates towards Rollbar", - "version": "0.1.32", + "version": "0.1.33-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@types/express": "^4.17.6", "camelcase-keys": "^7.0.1", @@ -50,8 +50,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "msw": "^0.45.0", "supertest": "^6.1.3" diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index de7caae47d..cd9f73bfe0 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-rollbar +## 0.4.9-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.4.8 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 309ced4f67..d31dd16bcb 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar", "description": "A Backstage plugin that integrates towards Rollbar", - "version": "0.4.8", + "version": "0.4.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,9 +36,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index 509e2025a7..e5f6fedf6a 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.11-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.2.10 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index a6c64ce8b6..94f5233fca 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-cookiecutter", "description": "A module for the scaffolder backend that lets you template projects using cookiecutter", - "version": "0.2.10", + "version": "0.2.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-scaffolder-backend": "^1.5.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-scaffolder-backend": "^1.6.0-next.0", "@backstage/config": "^1.0.1", "@backstage/types": "^1.0.0", "command-exists": "^1.2.9", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/fs-extra": "^9.0.1", "@types/mock-fs": "^4.13.0", "@types/jest": "^26.0.7", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index 64f782e243..15930b6b1d 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.4.3 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 5df1b902eb..79c3c4cd89 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", "description": "A module for the scaffolder backend that lets you template projects using Rails", - "version": "0.4.3", + "version": "0.4.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,17 +24,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/plugin-scaffolder-backend": "^1.5.0", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/plugin-scaffolder-backend": "^1.6.0-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", + "@backstage/integration": "^1.3.1-next.0", "@backstage/types": "^1.0.0", "command-exists": "^1.2.9", "fs-extra": "^10.0.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "@types/command-exists": "^1.2.0", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index 21bc6b30fa..117dd2e7d0 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.6.0-next.0 + ## 0.2.8 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index ab487b72f3..01aed0c8fc 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-yeoman", - "version": "0.2.8", + "version": "0.2.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,13 +24,13 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/plugin-scaffolder-backend": "^1.5.0", + "@backstage/plugin-scaffolder-backend": "^1.6.0-next.0", "@backstage/types": "^1.0.0", "winston": "^3.2.1", "yeoman-environment": "^3.9.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@types/jest": "^26.0.7" }, "files": [ diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index c471cc82eb..609afd2c9b 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-scaffolder-backend +## 1.6.0-next.0 + +### Minor Changes + +- ea2eee9e6a: Add the option for a homepage when using the `github:publish` action +- 8872cc735d: Fixed a bug in plugin-scaffolder-backend where it ignores the skip migration database options. + + To use this new implementation you need to create the instance of `DatabaseTaskStore` using the `PluginDatabaseManager` instead of `Knex`; + + ``` + import { DatabaseManager, getRootLogger, loadBackendConfig } from '@backstage/backend-common'; + import { DatabaseTaskStore } from '@backstage/plugin-scaffolder-backend'; + + const config = await loadBackendConfig({ argv: process.argv, logger: getRootLogger() }); + const databaseManager = DatabaseManager.fromConfig(config, { migrations: { skip: true } }); + const databaseTaskStore = await DatabaseTaskStore.create(databaseManager); + ``` + +- 1ff817b3f0: add entity metadata to the template info type + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 2df9955f4a: Removed the depreacated `publish:file` action, use the template editor to test templates instead. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/backend-plugin-api@0.1.2-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-scaffolder-common@1.2.0-next.0 + - @backstage/plugin-catalog-node@1.0.2-next.0 + ## 1.5.0 ### Minor Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index c0da12df74..b9ab65349f 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend", "description": "The Backstage backend plugin that helps you create new things", - "version": "1.5.0", + "version": "1.6.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,16 +35,16 @@ "build:assets": "node scripts/build-nunjucks.js" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-backend": "^1.3.1", - "@backstage/plugin-scaffolder-common": "^1.1.2", - "@backstage/backend-plugin-api": "^0.1.1", - "@backstage/plugin-catalog-node": "^1.0.1", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.2-next.0", + "@backstage/plugin-scaffolder-common": "^1.2.0-next.0", + "@backstage/backend-plugin-api": "^0.1.2-next.0", + "@backstage/plugin-catalog-node": "^1.0.2-next.0", "@backstage/types": "^1.0.0", "@gitbeaker/core": "^35.6.0", "@gitbeaker/node": "^35.1.0", @@ -79,8 +79,8 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/command-exists": "^1.2.0", "@types/fs-extra": "^9.0.1", "@types/git-url-parse": "^9.0.0", diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md index bee023f1db..95a5c9061b 100644 --- a/plugins/scaffolder-common/CHANGELOG.md +++ b/plugins/scaffolder-common/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-scaffolder-common +## 1.2.0-next.0 + +### Minor Changes + +- 1ff817b3f0: add entity metadata to the template info type + ## 1.1.2 ### Patch Changes diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 6e12684ef1..f12e6e8de3 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-common", "description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin", - "version": "1.1.2", + "version": "1.2.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -43,6 +43,6 @@ "@backstage/types": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0" + "@backstage/cli": "^0.18.2-next.0" } } diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index 323e91f28b..c4a9830f3c 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-scaffolder +## 1.6.0-next.0 + +### Minor Changes + +- 3424a8075d: Added support for `async` validation for the `next` version of the plugin +- 192d856495: Implementing review step for the scaffolder under `create/next` + +### Patch Changes + +- 9ffb75616d: Fix bug with empty strings in `EntityPicker` +- 3f739be9d9: Minor API signatures cleanup +- 9097278df2: Updated dependency `json-schema-library` to `^7.0.0`. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-scaffolder-common@1.2.0-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-permission-react@0.4.5-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + ## 1.5.0 ### Minor Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 114224468c..4200e2d3ff 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder", "description": "The Backstage plugin that helps you create new things", - "version": "1.5.0", + "version": "1.6.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,18 +35,18 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-permission-react": "^0.4.4", - "@backstage/plugin-scaffolder-common": "^1.1.2", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-permission-react": "^0.4.5-next.0", + "@backstage/plugin-scaffolder-common": "^1.2.0-next.0", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@codemirror/language": "^6.0.0", @@ -81,11 +81,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/plugin-catalog": "^1.5.0", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/plugin-catalog": "^1.5.1-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index ed1c23000f..211d5b9444 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.0.2-next.0 + +### Patch Changes + +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.0.1 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 119c4602d1..2c8e143dd7 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", "description": "A module for the search backend that implements search using ElasticSearch", - "version": "1.0.1", + "version": "1.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,8 +24,8 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/plugin-search-backend-node": "^1.0.1", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-backend-node": "^1.0.2-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "@elastic/elasticsearch": "^7.13.0", "@opensearch-project/opensearch": "^2.0.0", "aws-os-connection": "^0.1.0", @@ -36,8 +36,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/cli": "^0.18.1", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@elastic/elasticsearch-mock": "^1.0.0", "@short.io/opensearch-mock": "^0.3.1" }, diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index c760d518ea..f1d5e35b18 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-search-backend-module-pg +## 0.4.0-next.0 + +### Minor Changes + +- 8872cc735d: Fixed a bug in search-backend-module-pg where it ignores the skip migration database options when using the database. + + To use this new implementation you need to create the instance of `DatabaseDocumentStore` using the `PluginDatabaseManager` instead of `Knex`; + + ``` + import { DatabaseManager, getRootLogger, loadBackendConfig } from '@backstage/backend-common'; + import { DatabaseDocumentStore } from '@backstage/plugin-search-backend-module-pg'; + + const config = await loadBackendConfig({ argv: process.argv, logger: getRootLogger() }); + const databaseManager = DatabaseManager.fromConfig(config, { migrations: { skip: true } }); + const databaseDocumentStore = await DatabaseDocumentStore.create(databaseManager); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 0.3.6 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index b2a75f8ebc..23d7548809 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-pg", "description": "A module for the search backend that implements search using PostgreSQL", - "version": "0.3.6", + "version": "0.4.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,17 +23,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", - "@backstage/plugin-search-backend-node": "^1.0.1", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-backend-node": "^1.0.2-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "lodash": "^4.17.21", "knex": "^2.0.0", "uuid": "^8.3.2" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1" + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index 71e4bd5431..e02f0fda0b 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-backend-node +## 1.0.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.0.1 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index ec83bb50a8..6f6125e85a 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-node", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", - "version": "1.0.1", + "version": "1.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "@types/lunr": "^2.3.3", "lodash": "^4.17.21", "lunr": "^2.3.9", @@ -38,8 +38,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/cli": "^0.18.1", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/ndjson": "^2.0.1" }, "files": [ diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index 019aa50ea8..6179dbff4f 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search-backend +## 1.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-search-backend-node@1.0.2-next.0 + - @backstage/plugin-auth-node@0.2.5-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-permission-node@0.6.5-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.0.1 ### Patch Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 0e1efb11f6..0e1ec070e3 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend", "description": "The Backstage backend plugin that provides your backstage app with search", - "version": "1.0.1", + "version": "1.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,14 +23,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/plugin-auth-node": "^0.2.4", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-permission-node": "^0.6.4", - "@backstage/plugin-search-backend-node": "^1.0.1", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-auth-node": "^0.2.5-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-permission-node": "^0.6.5-next.0", + "@backstage/plugin-search-backend-node": "^1.0.2-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "@backstage/types": "^1.0.0", "@types/express": "^4.17.6", "dataloader": "^2.0.0", @@ -43,7 +43,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/search-common/CHANGELOG.md b/plugins/search-common/CHANGELOG.md index 2f06e6da67..7f19edf98d 100644 --- a/plugins/search-common/CHANGELOG.md +++ b/plugins/search-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-search-common +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.4-next.0 + ## 1.0.0 ### Major Changes diff --git a/plugins/search-common/package.json b/plugins/search-common/package.json index ae643941b7..d0be6ddb43 100644 --- a/plugins/search-common/package.json +++ b/plugins/search-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-common", "description": "Common functionalities for Search, to be shared between various search-enabled plugins", - "version": "1.0.0", + "version": "1.0.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -40,10 +40,10 @@ }, "dependencies": { "@backstage/types": "^1.0.0", - "@backstage/plugin-permission-common": "^0.6.3" + "@backstage/plugin-permission-common": "^0.6.4-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1-next.0" + "@backstage/cli": "^0.18.2-next.0" }, "jest": { "roots": [ diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index d250b7ffe4..d5272d8410 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-search-react +## 1.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.0.1 ### Patch Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index 4ca61dba66..80234670e7 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.0.1", + "version": "1.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,9 +31,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/version-bridge": "^1.0.1", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", @@ -48,8 +48,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/core-app-api": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", "@testing-library/jest-dom": "^5.10.1", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index 550073969d..25fc0fbd8c 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search +## 1.0.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.0.1 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index 8c000eac6c..a0b1370ec8 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search", "description": "The Backstage plugin that provides your backstage app with search", - "version": "1.0.1", + "version": "1.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,12 +35,12 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/plugin-search-react": "^1.0.1", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/plugin-search-react": "^1.0.2-next.0", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@backstage/version-bridge": "^1.0.1", @@ -57,10 +57,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index d7327602f0..ddd7e4f358 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-sentry +## 0.4.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.4.1 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index cc33c8dc13..c0d3df778f 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sentry", "description": "A Backstage plugin that integrates towards Sentry", - "version": "0.4.1", + "version": "0.4.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,9 +36,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index 9ea824276e..4318da5fc1 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-shortcuts +## 0.3.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.3.0 ### Minor Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 24ac74f9aa..f02a7ba68a 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-shortcuts", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", - "version": "0.3.0", + "version": "0.3.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,8 +24,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index 06b98d9044..19faf29088 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-sonarqube-backend +## 0.1.1-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index cdfdb005b5..6f32e36331 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,7 +23,7 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", "@types/express": "*", @@ -34,8 +34,8 @@ "yn": "^5.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@types/supertest": "^2.0.12", "msw": "^0.45.0", "supertest": "^6.2.4" diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index 9181ae3fcf..946c9701ed 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-sonarqube +## 0.4.1-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.4.0 ### Minor Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index ac3a8302b0..5bd8a088a6 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.4.0", + "version": "0.4.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,9 +37,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index 9bedb8334b..9dfaaf7751 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-splunk-on-call +## 0.3.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.3.32 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 1e496f5402..0bf2d7daed 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-splunk-on-call", "description": "A Backstage plugin that integrates towards Splunk On-Call", - "version": "0.3.32", + "version": "0.3.33-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,9 +35,9 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index 4ba519ba73..cb83e3205f 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-stack-overflow-backend +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-common@1.0.1-next.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 9f75578252..db883dbfd1 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow-backend", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,7 +33,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "@backstage/config": "^1.0.1", "qs": "^6.9.4", "cross-fetch": "^3.1.5", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index 193f0f4b6e..2770402c01 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-stack-overflow +## 0.1.5-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-home@0.4.25-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index c8a5d36c65..f6b7be12b9 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,10 +24,10 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/plugin-home": "^0.4.24", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/plugin-home": "^0.4.25-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index c6e8bd0d0a..6951f1d4ef 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-tech-insights-node@0.3.4-next.0 + ## 0.1.19 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 3a7191e429..912834c049 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend-module-jsonfc", - "version": "0.1.19", + "version": "0.1.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", "@backstage/plugin-tech-insights-common": "^0.2.6", - "@backstage/plugin-tech-insights-node": "^0.3.3", + "@backstage/plugin-tech-insights-node": "^0.3.4-next.0", "ajv": "^8.10.0", "json-rules-engine": "^6.1.2", "lodash": "^4.17.21", @@ -46,7 +46,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index a9178622a9..fcd617e04a 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-tech-insights-backend +## 0.5.2-next.0 + +### Patch Changes + +- 8872cc735d: Fixed a bug where the database option to skip migrations was ignored. +- 2e0689e536: Support for timeout in FactRetrieverRegistrationOptions +- 9e8e9f5243: Modify Tech insight initialization to expose FactRetrieverEngine. Enables users to trigger fact retrieval manually or reschedule retrievers on runtime. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/plugin-tech-insights-node@0.3.4-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/catalog-client@1.0.5-next.0 + ## 0.5.1 ### Patch Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index e176a5d5f6..e9ef5f0c83 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend", - "version": "0.5.1", + "version": "0.5.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,14 +34,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", "@backstage/plugin-tech-insights-common": "^0.2.6", - "@backstage/plugin-tech-insights-node": "^0.3.3", + "@backstage/plugin-tech-insights-node": "^0.3.4-next.0", "@types/express": "^4.17.6", "@types/luxon": "^3.0.0", "express": "^4.17.1", @@ -55,8 +55,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", "@types/semver": "^7.3.8", "@types/supertest": "^2.0.8", "supertest": "^6.1.3", diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index 1b5dabb88d..9c38ddc8c1 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -38,7 +38,7 @@ "@backstage/types": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index 36650980e8..53e8b06716 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-tech-insights-node +## 0.3.4-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- 2e0689e536: Support for timeout in FactRetrieverRegistrationOptions +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 355806bdfa..afdc2c8c82 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-node", - "version": "0.3.3", + "version": "0.3.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,8 +33,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", "@backstage/config": "^1.0.1", "@backstage/plugin-tech-insights-common": "^0.2.6", "@backstage/types": "^1.0.0", @@ -43,7 +43,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1" + "@backstage/cli": "^0.18.2-next.0" }, "files": [ "dist" diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index b80355146d..040783d6eb 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights +## 0.2.5-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 2c33001ef3..ab4477acf1 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.2.4", + "version": "0.2.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,10 +29,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/plugin-tech-insights-common": "^0.2.6", "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index 0659f93073..9892f57f73 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-tech-radar +## 0.5.16-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.5.15 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index b68536c1ff..e637ca6720 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-tech-radar", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", - "version": "0.5.15", + "version": "0.5.16-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,8 +34,8 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index f10fadfec2..872898aa96 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.4-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/plugin-techdocs@1.3.2-next.0 + - @backstage/core-app-api@1.0.6-next.0 + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/test-utils@1.1.4-next.0 + - @backstage/plugin-catalog@1.5.1-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + ## 1.0.3 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index b168371441..7d87ca2e52 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-addons-test-utils", - "version": "1.0.3", + "version": "1.0.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,15 +32,15 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-app-api": "^1.0.5", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog": "^1.5.0", - "@backstage/plugin-search-react": "^1.0.1", - "@backstage/plugin-techdocs": "^1.3.1", - "@backstage/plugin-techdocs-react": "^1.0.3", - "@backstage/test-utils": "^1.1.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog": "^1.5.1-next.0", + "@backstage/plugin-search-react": "^1.0.2-next.0", + "@backstage/plugin-techdocs": "^1.3.2-next.0", + "@backstage/plugin-techdocs-react": "^1.0.4-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", @@ -56,8 +56,8 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/dev-utils": "^1.0.5", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index 8140808d9d..890bcfef4f 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-techdocs-backend +## 1.2.2-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-permission-common@0.6.4-next.0 + - @backstage/plugin-techdocs-node@1.3.1-next.0 + - @backstage/plugin-catalog-common@1.0.6-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.2.1 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index ec47ff7fbf..46b7d062dd 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-backend", "description": "The Backstage backend plugin that renders technical documentation for your components", - "version": "1.2.1", + "version": "1.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,16 +34,16 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-catalog-common": "^1.0.5", - "@backstage/plugin-permission-common": "^0.6.3", - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/plugin-techdocs-node": "^1.3.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-catalog-common": "^1.0.6-next.0", + "@backstage/plugin-permission-common": "^0.6.4-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/plugin-techdocs-node": "^1.3.1-next.0", "@types/express": "^4.17.6", "dockerode": "^3.3.1", "express": "^4.17.1", @@ -56,9 +56,9 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.27", - "@backstage/cli": "^0.18.1", - "@backstage/plugin-search-backend-node": "1.0.1", + "@backstage/backend-test-utils": "^0.1.28-next.0", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/plugin-search-backend-node": "1.0.2-next.0", "@types/dockerode": "^3.3.0", "msw": "^0.45.0", "supertest": "^6.1.3" diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 4babb601bc..9b7107ae84 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.4-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + ## 1.0.3 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 4a1fe091ba..2bacd57513 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", "description": "Plugin module for contributed TechDocs Addons", - "version": "1.0.3", + "version": "1.0.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", - "@backstage/integration": "^1.3.0", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-techdocs-react": "^1.0.3", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-techdocs-react": "^1.0.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", @@ -51,11 +51,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/plugin-techdocs-addons-test-utils": "^1.0.3", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/plugin-techdocs-addons-test-utils": "^1.0.4-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index 8b1b2059cb..016c2c4278 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-techdocs-node +## 1.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.3.0 ### Minor Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index d1a79db3b3..f858329058 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-node", "description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", - "version": "1.3.0", + "version": "1.3.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -42,12 +42,12 @@ "dependencies": { "@azure/identity": "^2.0.1", "@azure/storage-blob": "^12.5.0", - "@backstage/backend-common": "^0.15.0", + "@backstage/backend-common": "^0.15.1-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/plugin-search-common": "^1.0.0", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", "@google-cloud/storage": "^6.0.0", "@trendyol-js/openstack-swift-sdk": "^0.0.5", "@types/express": "^4.17.6", @@ -64,7 +64,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/fs-extra": "^9.0.5", "@types/js-yaml": "^4.0.0", "@types/mime-types": "^2.1.0", diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 08db6050b8..bffa6af98e 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-techdocs-react +## 1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 1.0.3 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 8074b799bf..452838284e 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-react", "description": "Shared frontend utilities for TechDocs and Addons", - "version": "1.0.3", + "version": "1.0.4-next.0", "private": false, "publishConfig": { "access": "public", @@ -37,8 +37,8 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/version-bridge": "^1.0.1", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.57", @@ -57,7 +57,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", - "@backstage/test-utils": "^1.1.3", + "@backstage/test-utils": "^1.1.4-next.0", "@backstage/theme": "^0.2.16" }, "files": [ diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 099c84eb0b..72460db23b 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-techdocs +## 1.3.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- 829f14a9b0: Always update the title and sub-title when the location changes on a `TechDocs` reader page. +- ef9ab322de: Minor API signatures cleanup +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/integration-react@1.1.4-next.0 + - @backstage/integration@1.3.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + - @backstage/plugin-search-react@1.0.2-next.0 + - @backstage/plugin-techdocs-react@1.0.4-next.0 + - @backstage/plugin-search-common@1.0.1-next.0 + ## 1.3.1 ### Patch Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 8055a20009..604fec15ed 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs", "description": "The Backstage plugin that renders technical documentation for your components", - "version": "1.3.1", + "version": "1.3.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,15 +37,15 @@ "dependencies": { "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", - "@backstage/integration-react": "^1.1.3", - "@backstage/plugin-catalog-react": "^1.1.3", - "@backstage/plugin-search-common": "^1.0.0", - "@backstage/plugin-search-react": "^1.0.1", - "@backstage/plugin-techdocs-react": "^1.0.3", + "@backstage/integration": "^1.3.1-next.0", + "@backstage/integration-react": "^1.1.4-next.0", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-search-common": "^1.0.1-next.0", + "@backstage/plugin-search-react": "^1.0.2-next.0", + "@backstage/plugin-techdocs-react": "^1.0.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -67,10 +67,10 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index bfeaef7f11..fdb9ba6bba 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-todo-backend +## 0.1.33-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/catalog-client@1.0.5-next.0 + - @backstage/integration@1.3.1-next.0 + ## 0.1.32 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index b6eda27164..359f63c12e 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo-backend", "description": "A Backstage backend plugin that lets you browse TODO comments in your source code", - "version": "0.1.32", + "version": "0.1.33-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,12 +29,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/catalog-client": "^1.0.4", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/catalog-client": "^1.0.5-next.0", "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", - "@backstage/integration": "^1.3.0", + "@backstage/integration": "^1.3.1-next.0", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -43,7 +43,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/supertest": "^2.0.8", "msw": "^0.45.0", "supertest": "^6.1.3" diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index ae2fe2a9df..40c9f2a2f0 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-todo +## 0.2.11-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.2.10 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 48c8c603a4..66f367f189 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo", "description": "A Backstage plugin that lets you browse TODO comments in your source code", - "version": "0.2.10", + "version": "0.2.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,10 +31,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -45,10 +45,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index 25fc8a11d6..ed080a12ba 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-user-settings +## 0.4.8-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.4.7 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 0bc05c1215..6e73ba6499 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings", "description": "A Backstage plugin that provides a settings page", - "version": "0.4.7", + "version": "0.4.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,8 +34,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -48,10 +48,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md index 64c3782f9d..63dc693cc6 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-vault-backend +## 0.2.2-next.0 + +### Patch Changes + +- 3f739be9d9: Minor API signatures cleanup +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/backend-test-utils@0.1.28-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index feca26cd6c..27ca7069fe 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-backend", "description": "A Backstage backend plugin that integrates towards Vault", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.0", - "@backstage/backend-tasks": "^0.3.4", - "@backstage/backend-test-utils": "^0.1.27", + "@backstage/backend-common": "^0.15.1-next.0", + "@backstage/backend-tasks": "^0.3.5-next.0", + "@backstage/backend-test-utils": "^0.1.28-next.0", "@backstage/config": "^1.0.1", "@backstage/errors": "^1.1.0", "@types/express": "*", @@ -51,7 +51,7 @@ "yn": "^5.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", + "@backstage/cli": "^0.18.2-next.0", "@types/compression": "^1.7.2", "@types/supertest": "^2.0.8", "msw": "^0.45.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index 1cbc985e1c..0ca6452507 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-vault +## 0.1.3-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + - @backstage/plugin-catalog-react@1.1.4-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index a50d5c64ca..3c1265901f 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault", "description": "A Backstage plugin that integrates towards Vault", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,10 +35,10 @@ }, "dependencies": { "@backstage/catalog-model": "^1.1.0", - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", - "@backstage/plugin-catalog-react": "^1.1.3", + "@backstage/plugin-catalog-react": "^1.1.4-next.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 2639b124e8..46701e0e11 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-xcmetrics +## 0.2.29-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.6-next.0 + - @backstage/core-components@0.11.1-next.0 + ## 0.2.28 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 624c5c1f98..a12c2bc64a 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-xcmetrics", "description": "A Backstage plugin that shows XCode build metrics for your components", - "version": "0.2.28", + "version": "0.2.29-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,8 +24,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.0", - "@backstage/core-plugin-api": "^1.0.5", + "@backstage/core-components": "^0.11.1-next.0", + "@backstage/core-plugin-api": "^1.0.6-next.0", "@backstage/errors": "^1.1.0", "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.1", - "@backstage/core-app-api": "^1.0.5", - "@backstage/dev-utils": "^1.0.5", - "@backstage/test-utils": "^1.1.3", + "@backstage/cli": "^0.18.2-next.0", + "@backstage/core-app-api": "^1.0.6-next.0", + "@backstage/dev-utils": "^1.0.6-next.0", + "@backstage/test-utils": "^1.1.4-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/yarn.lock b/yarn.lock index 4614d4de04..c973b39612 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2040,6 +2040,209 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" +"@backstage/catalog-client@^1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-1.0.4.tgz#205169a3a19be22866ffcc94ec415ca795fe9589" + integrity sha512-N3ko48XX8HnFCEwhFglC+rqIsy1KQpPlsPMhMYEOYeaOgw8H26SPMtv4wyFjcm9/Hadars+L3fnmQdSShECawg== + dependencies: + "@backstage/catalog-model" "^1.1.0" + "@backstage/errors" "^1.1.0" + cross-fetch "^3.1.5" + +"@backstage/core-components@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.11.0.tgz#3e966b4670bca9db228808e41e251f07361580a2" + integrity sha512-Exu7qp5X+vykLFSLwZBKlSHZXXp/goid1Zk+C2pGH/Nil7MH/KI1POsA4AupggJAR910q++oV1MbKZIjUIOHhA== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/core-plugin-api" "^1.0.5" + "@backstage/errors" "^1.1.0" + "@backstage/theme" "^0.2.16" + "@backstage/version-bridge" "^1.0.1" + "@material-table/core" "^3.1.0" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + "@react-hookz/web" "^15.0.0" + "@types/react-sparklines" "^1.7.0" + "@types/react-text-truncate" "^0.14.0" + ansi-regex "^6.0.1" + classnames "^2.2.6" + d3-selection "^3.0.0" + d3-shape "^3.0.0" + d3-zoom "^3.0.0" + dagre "^0.8.5" + history "^5.0.0" + immer "^9.0.1" + lodash "^4.17.21" + pluralize "^8.0.0" + prop-types "^15.7.2" + qs "^6.9.4" + rc-progress "3.4.0" + react-helmet "6.1.0" + react-hook-form "^7.12.2" + react-markdown "^8.0.0" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-sparklines "^1.7.0" + react-syntax-highlighter "^15.4.5" + react-text-truncate "^0.19.0" + react-use "^17.3.2" + react-virtualized-auto-sizer "^1.0.6" + react-window "^1.8.6" + remark-gfm "^3.0.1" + zen-observable "^0.8.15" + zod "^3.11.6" + +"@backstage/core-plugin-api@^1.0.0", "@backstage/core-plugin-api@^1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-1.0.5.tgz#a6d0dd8272e9175f381dee6e1090d758d408cca0" + integrity sha512-4d9X8+nu2n4t7Vu26LNzTKMW3U2peHoC1wWGKVDLwbMdewG0EXrbUIRo7Daon0xwyDrZWBUCrDiFElgLOb61Bg== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/types" "^1.0.0" + "@backstage/version-bridge" "^1.0.1" + history "^5.0.0" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/integration-react@^1.0.0": + version "1.1.3" + resolved "https://registry.npmjs.org/@backstage/integration-react/-/integration-react-1.1.3.tgz#f69ef35bf64e30cd12edf1c9e072f34dfc3293a0" + integrity sha512-RLXXUR9ICqBw513cJkLhKJn4by4QGBxev5EtMZEQFzZp8NaljEud4BB2WN5qm5yuM0v8n6T55xlNfl3GKpRYyw== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/core-components" "^0.11.0" + "@backstage/core-plugin-api" "^1.0.5" + "@backstage/integration" "^1.3.0" + "@backstage/theme" "^0.2.16" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + react-use "^17.2.4" + +"@backstage/integration@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@backstage/integration/-/integration-1.3.0.tgz#1907c94a58f09aa6881d66d2eb7b9521fff6db76" + integrity sha512-GKGEK1CqOY4nmFSS3QwBze4AsT/MsLlyK/LwYy87p+bicYF3VAcSUddfwqx/20K7GaaWGwkU0DjCI5k5g+kSXg== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/errors" "^1.1.0" + "@octokit/auth-app" "^4.0.0" + "@octokit/rest" "^19.0.3" + cross-fetch "^3.1.5" + git-url-parse "^12.0.0" + lodash "^4.17.21" + luxon "^3.0.0" + +"@backstage/plugin-catalog-common@^1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.5.tgz#0617387e52181ea347b505d00704b791eef2dcda" + integrity sha512-dBKSBHPlohL3aHVGZLKGZfHtEnWzH1bwWCTJlqJLdiyfiRWjwtgRTIlcv2GSizYs4WZ1IW1LfDxkheR0pAW8vg== + dependencies: + "@backstage/plugin-permission-common" "^0.6.3" + "@backstage/plugin-search-common" "^1.0.0" + +"@backstage/plugin-catalog-react@^1.0.0", "@backstage/plugin-catalog-react@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.1.3.tgz#a3a8b2ddd8a8a8a6d8d822ef98ada306a9086eb0" + integrity sha512-VXsrRmNM+s4i8XoJk6TLkKvekVgZvEqVe3nAUUIfwZQwYe4wV/J0WlEeimKdhNMq8pLhJIYeBsna5J10yEZR9w== + dependencies: + "@backstage/catalog-client" "^1.0.4" + "@backstage/catalog-model" "^1.1.0" + "@backstage/core-components" "^0.11.0" + "@backstage/core-plugin-api" "^1.0.5" + "@backstage/errors" "^1.1.0" + "@backstage/integration" "^1.3.0" + "@backstage/plugin-catalog-common" "^1.0.5" + "@backstage/plugin-permission-common" "^0.6.3" + "@backstage/plugin-permission-react" "^0.4.4" + "@backstage/theme" "^0.2.16" + "@backstage/types" "^1.0.0" + "@backstage/version-bridge" "^1.0.1" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + classnames "^2.2.6" + jwt-decode "^3.1.0" + lodash "^4.17.21" + qs "^6.9.4" + react-router "6.0.0-beta.0" + react-use "^17.2.4" + yaml "^2.0.0" + zen-observable "^0.8.15" + +"@backstage/plugin-home@^0.4.19", "@backstage/plugin-home@^0.4.24": + version "0.4.24" + resolved "https://registry.npmjs.org/@backstage/plugin-home/-/plugin-home-0.4.24.tgz#82bb624fdf56c4a2fd06958928813a648d88ca03" + integrity sha512-7cZYNM+4ZohE6MIXzVAMsBW5JpkOPXJP8RjMVsLOIX4FGngS5mK7LFVTuYZ/fLwAsNJIEc0s6zxHM8zyFw1Zow== + dependencies: + "@backstage/catalog-model" "^1.1.0" + "@backstage/config" "^1.0.1" + "@backstage/core-components" "^0.11.0" + "@backstage/core-plugin-api" "^1.0.5" + "@backstage/plugin-catalog-react" "^1.1.3" + "@backstage/plugin-stack-overflow" "^0.1.4" + "@backstage/theme" "^0.2.16" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + lodash "^4.17.21" + react-router "6.0.0-beta.0" + react-use "^17.2.4" + +"@backstage/plugin-permission-common@^0.6.3": + version "0.6.3" + resolved "https://registry.npmjs.org/@backstage/plugin-permission-common/-/plugin-permission-common-0.6.3.tgz#9815dd2dddf224454f55f35710b6a68644e95f00" + integrity sha512-7GL3+9M2wDiG406JSIzTq08KNrSZToAG5PTwKHXD6RFC1jF9X50aRYv+5jVwdmRhSk6r5JqoB4HhcgisseBzoQ== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/errors" "^1.1.0" + cross-fetch "^3.1.5" + uuid "^8.0.0" + zod "^3.11.6" + +"@backstage/plugin-permission-react@^0.4.4": + version "0.4.4" + resolved "https://registry.npmjs.org/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.4.tgz#3032d621cc9259d2d9fd4043ac01ece8b012e6c1" + integrity sha512-dldu0yc1tQTI5SVSlS3jIB8kYd6ntWk3mKyX/8aFUt2BNBajqwBMYUOjAknXnnuNpYqxE1uVsPrZXePC7QQ/1g== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/core-plugin-api" "^1.0.5" + "@backstage/plugin-permission-common" "^0.6.3" + cross-fetch "^3.1.5" + react-router "6.0.0-beta.0" + react-use "^17.2.4" + swr "^1.1.2" + +"@backstage/plugin-search-common@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@backstage/plugin-search-common/-/plugin-search-common-1.0.0.tgz#fa9ac1f57d79e7cd9b9ca9a929065979010a5a37" + integrity sha512-Jr+z/cqc60GkY7rrIXifmAIdlRbEFtWesoLx5v4rgLGG/lCgsMzAm0Vxzg1g/9r71raSnKBakPajjhpMEZ5SWA== + dependencies: + "@backstage/plugin-permission-common" "^0.6.3" + "@backstage/types" "^1.0.0" + +"@backstage/plugin-stack-overflow@^0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/@backstage/plugin-stack-overflow/-/plugin-stack-overflow-0.1.4.tgz#98f8b78c36fc51ed51934c540b08247b85397b6d" + integrity sha512-JzXs6lMzsBJTP5zLhzBoikzGv3kk47ahj6bDA9KhvHN/ky+rZ8Ue56wZ9oB5rABbH5BnenVkJvy/k7gnXl4s/g== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/core-components" "^0.11.0" + "@backstage/core-plugin-api" "^1.0.5" + "@backstage/plugin-home" "^0.4.24" + "@backstage/plugin-search-common" "^1.0.0" + "@backstage/theme" "^0.2.16" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@testing-library/jest-dom" "^5.10.1" + cross-fetch "^3.1.5" + lodash "^4.17.21" + qs "^6.9.4" + react-use "^17.2.4" + "@balena/dockerignore@^1.0.2": version "1.0.2" resolved "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" @@ -13179,63 +13382,63 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" "example-app@link:packages/app": - version "0.2.74" + version "0.2.75-next.0" dependencies: - "@backstage/app-defaults" "^1.0.5" + "@backstage/app-defaults" "^1.0.6-next.0" "@backstage/catalog-model" "^1.1.0" - "@backstage/cli" "^0.18.1" + "@backstage/cli" "^0.18.2-next.0" "@backstage/config" "^1.0.1" - "@backstage/core-app-api" "^1.0.5" - "@backstage/core-components" "^0.11.0" - "@backstage/core-plugin-api" "^1.0.5" - "@backstage/integration-react" "^1.1.3" - "@backstage/plugin-airbrake" "^0.3.8" - "@backstage/plugin-apache-airflow" "^0.2.1" - "@backstage/plugin-api-docs" "^0.8.8" - "@backstage/plugin-azure-devops" "^0.1.24" - "@backstage/plugin-badges" "^0.2.32" - "@backstage/plugin-catalog-common" "^1.0.5" - "@backstage/plugin-catalog-graph" "^0.2.20" - "@backstage/plugin-catalog-import" "^0.8.11" - "@backstage/plugin-catalog-react" "^1.1.3" - "@backstage/plugin-circleci" "^0.3.8" - "@backstage/plugin-cloudbuild" "^0.3.8" - "@backstage/plugin-code-coverage" "^0.2.1" - "@backstage/plugin-cost-insights" "^0.11.30" - "@backstage/plugin-dynatrace" "^0.1.2" - "@backstage/plugin-explore" "^0.3.39" - "@backstage/plugin-gcalendar" "^0.3.4" - "@backstage/plugin-gcp-projects" "^0.3.27" - "@backstage/plugin-github-actions" "^0.5.8" - "@backstage/plugin-gocd" "^0.1.14" - "@backstage/plugin-graphiql" "^0.2.40" - "@backstage/plugin-home" "^0.4.24" - "@backstage/plugin-jenkins" "^0.7.7" - "@backstage/plugin-kafka" "^0.3.8" - "@backstage/plugin-kubernetes" "^0.7.1" - "@backstage/plugin-lighthouse" "^0.3.8" - "@backstage/plugin-newrelic" "^0.3.26" - "@backstage/plugin-newrelic-dashboard" "^0.2.1" - "@backstage/plugin-org" "^0.5.8" - "@backstage/plugin-pagerduty" "0.5.1" - "@backstage/plugin-permission-react" "^0.4.4" - "@backstage/plugin-rollbar" "^0.4.8" - "@backstage/plugin-scaffolder" "^1.5.0" - "@backstage/plugin-search" "^1.0.1" - "@backstage/plugin-search-common" "^1.0.0" - "@backstage/plugin-search-react" "^1.0.1" - "@backstage/plugin-sentry" "^0.4.1" - "@backstage/plugin-shortcuts" "^0.3.0" - "@backstage/plugin-stack-overflow" "^0.1.4" - "@backstage/plugin-tech-insights" "^0.2.4" - "@backstage/plugin-tech-radar" "^0.5.15" - "@backstage/plugin-techdocs" "^1.3.1" - "@backstage/plugin-techdocs-module-addons-contrib" "^1.0.3" - "@backstage/plugin-techdocs-react" "^1.0.3" - "@backstage/plugin-todo" "^0.2.10" - "@backstage/plugin-user-settings" "^0.4.7" + "@backstage/core-app-api" "^1.0.6-next.0" + "@backstage/core-components" "^0.11.1-next.0" + "@backstage/core-plugin-api" "^1.0.6-next.0" + "@backstage/integration-react" "^1.1.4-next.0" + "@backstage/plugin-airbrake" "^0.3.9-next.0" + "@backstage/plugin-apache-airflow" "^0.2.2-next.0" + "@backstage/plugin-api-docs" "^0.8.9-next.0" + "@backstage/plugin-azure-devops" "^0.2.0-next.0" + "@backstage/plugin-badges" "^0.2.33-next.0" + "@backstage/plugin-catalog-common" "^1.0.6-next.0" + "@backstage/plugin-catalog-graph" "^0.2.21-next.0" + "@backstage/plugin-catalog-import" "^0.8.12-next.0" + "@backstage/plugin-catalog-react" "^1.1.4-next.0" + "@backstage/plugin-circleci" "^0.3.9-next.0" + "@backstage/plugin-cloudbuild" "^0.3.9-next.0" + "@backstage/plugin-code-coverage" "^0.2.2-next.0" + "@backstage/plugin-cost-insights" "^0.11.31-next.0" + "@backstage/plugin-dynatrace" "^0.2.0-next.0" + "@backstage/plugin-explore" "^0.3.40-next.0" + "@backstage/plugin-gcalendar" "^0.3.5-next.0" + "@backstage/plugin-gcp-projects" "^0.3.28-next.0" + "@backstage/plugin-github-actions" "^0.5.9-next.0" + "@backstage/plugin-gocd" "^0.1.15-next.0" + "@backstage/plugin-graphiql" "^0.2.41-next.0" + "@backstage/plugin-home" "^0.4.25-next.0" + "@backstage/plugin-jenkins" "^0.7.8-next.0" + "@backstage/plugin-kafka" "^0.3.9-next.0" + "@backstage/plugin-kubernetes" "^0.7.2-next.0" + "@backstage/plugin-lighthouse" "^0.3.9-next.0" + "@backstage/plugin-newrelic" "^0.3.27-next.0" + "@backstage/plugin-newrelic-dashboard" "^0.2.2-next.0" + "@backstage/plugin-org" "^0.5.9-next.0" + "@backstage/plugin-pagerduty" "0.5.2-next.0" + "@backstage/plugin-permission-react" "^0.4.5-next.0" + "@backstage/plugin-rollbar" "^0.4.9-next.0" + "@backstage/plugin-scaffolder" "^1.6.0-next.0" + "@backstage/plugin-search" "^1.0.2-next.0" + "@backstage/plugin-search-common" "^1.0.1-next.0" + "@backstage/plugin-search-react" "^1.0.2-next.0" + "@backstage/plugin-sentry" "^0.4.2-next.0" + "@backstage/plugin-shortcuts" "^0.3.1-next.0" + "@backstage/plugin-stack-overflow" "^0.1.5-next.0" + "@backstage/plugin-tech-insights" "^0.2.5-next.0" + "@backstage/plugin-tech-radar" "^0.5.16-next.0" + "@backstage/plugin-techdocs" "^1.3.2-next.0" + "@backstage/plugin-techdocs-module-addons-contrib" "^1.0.4-next.0" + "@backstage/plugin-techdocs-react" "^1.0.4-next.0" + "@backstage/plugin-todo" "^0.2.11-next.0" + "@backstage/plugin-user-settings" "^0.4.8-next.0" "@backstage/theme" "^0.2.16" - "@internal/plugin-catalog-customized" "0.0.1" + "@internal/plugin-catalog-customized" "0.0.2-next.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.57" @@ -24853,20 +25056,20 @@ tdigest@^0.1.1: bintrees "1.0.1" "techdocs-cli-embedded-app@link:packages/techdocs-cli-embedded-app": - version "0.2.73" + version "0.2.74-next.0" dependencies: - "@backstage/app-defaults" "^1.0.5" + "@backstage/app-defaults" "^1.0.6-next.0" "@backstage/catalog-model" "^1.1.0" - "@backstage/cli" "^0.18.1" + "@backstage/cli" "^0.18.2-next.0" "@backstage/config" "^1.0.1" - "@backstage/core-app-api" "^1.0.5" - "@backstage/core-components" "^0.11.0" - "@backstage/core-plugin-api" "^1.0.5" - "@backstage/integration-react" "^1.1.3" - "@backstage/plugin-catalog" "^1.5.0" - "@backstage/plugin-techdocs" "^1.3.1" - "@backstage/plugin-techdocs-react" "^1.0.3" - "@backstage/test-utils" "^1.1.3" + "@backstage/core-app-api" "^1.0.6-next.0" + "@backstage/core-components" "^0.11.1-next.0" + "@backstage/core-plugin-api" "^1.0.6-next.0" + "@backstage/integration-react" "^1.1.4-next.0" + "@backstage/plugin-catalog" "^1.5.1-next.0" + "@backstage/plugin-techdocs" "^1.3.2-next.0" + "@backstage/plugin-techdocs-react" "^1.0.4-next.0" + "@backstage/test-utils" "^1.1.4-next.0" "@backstage/theme" "^0.2.16" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" From a4aa87eeca5b02cdb5a5175037f3e44939a7cccc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Aug 2022 10:37:03 +0000 Subject: [PATCH 274/275] fix(deps): update dependency @swc/helpers to v0.4.9 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4614d4de04..bfd8c86ab9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6337,9 +6337,9 @@ "@swc/core-win32-x64-msvc" "1.2.242" "@swc/helpers@^0.4.7": - version "0.4.7" - resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.7.tgz#25a32e462e799a5a102eb9c241f73bbc4cb806a7" - integrity sha512-jJKr/2JOivCQxb5Xpli3asedRLH34QgJ3G+7gm6CoCOwt/LDDX9g67OuxvjFOiYZfngWYB66ZbjU6cUNtQdavg== + version "0.4.9" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.9.tgz#09ab44feae456adaa1acb00f59254b9d0f89ba72" + integrity sha512-VQBBIInp9++WQaRsXbi05XwnH0qhNCJ99iMzdh5WmA9eXhXKNc4NnMB8GEOL1aaRju+E+vQA4rGYFM1jmb3BXA== dependencies: tslib "^2.4.0" From d2ed9835ae3ce2c864ed4df12a243144672bffe4 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 23 Aug 2022 12:37:44 +0200 Subject: [PATCH 275/275] docs: tweak catalog section in threat model and add proxy section Signed-off-by: Patrik Oldsberg --- docs/overview/threat-model.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index c5af586f9a..120a0817a9 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -54,7 +54,7 @@ Backstage also supports authentication through a proxy where the user identity i ## Catalog -Integrators should configure `catalog.rules` and `catalog.locations[].rules` to limit the allowed entity kinds that users can define, in general it is best to restrict definition of User, Group, and Template entities so that internal users cannot register additional ones. Template entities define actions that are executed on the backend hosts, while the goal is for these actions to be secure regardless of input, it is still a more sensitive context and it is recommended that you protect it with additional checks. It is very important to not allow registration of User and Group entities if you ingest and rely on these as organizational data in your catalog. Doing so could otherwise open up for the ability to impersonate users and confuse group membership information. You should always ingest organizational data using a statically configured catalog location or an entity provider reading from a trusted source. +Integrators should configure `catalog.rules` and `catalog.locations[].rules` to limit the allowed entity kinds that users can define. In general it is best to restrict definition of User, Group, and Template entities so that internal users cannot register additional ones. Template entities define actions that are executed on the backend hosts, and while the goal is for these actions to be secure regardless of input, it is still a more sensitive context and it is recommended that you protect it with additional checks. It is very important to not allow registration of User and Group entities if you ingest and rely on these as organizational data in your catalog. Doing so could otherwise open up for the ability to impersonate users and confuse group membership information. You should always ingest organizational data using a statically configured catalog location or an entity provider reading from a trusted source. The entities emitted directly by an entity provider are always trusted and rules are not applied to them, but any entities produced further down the chain are still subject to the rules. The Catalog does not aim to protect against resource exhaustion attacks in its default setup. If you need to prevent your internal users from being able to register large amounts of entities, then it is recommended to disable entity registration and use a different approach for discovering entities. One way to mitigate any resource exhaustion attacks is to only allow the catalog to read from trusted SCM sources that have an audit trail. Catalog currently lacks limits for entity hierarchy depth and entity size, which we hope to address in the future. @@ -81,3 +81,9 @@ When documentation is generated locally, integrators are responsible for ensurin Regardless of backend configuration, the TechDocs frontend does not trust the generated HTML of any documentation sites and therefore applies a strict sanitization process before rendering out any content to users. By default, all TechDocs documentation is visible to all Backstage users. Access can be restricted to TechDocs sites by configuring view permissions for the Catalog. + +## Proxy + +The proxy backend acts as a utility for frontend plugins to access remote services that may not be set up to receive traffic directly from the Backstage frontend. Typical reasons for this would be that the upstream service does not provide the appropriate CORS headers or does not serve its content over HTTPS. + +The proxy entries are configured through static configuration. Each entry has a mount path and an upstream target, and also supports other options such as limiting the allowed methods, or injecting additional headers. It is recommended to avoid injecting authentication headers for upstream services, as this is a risky way to decorate requests with credentials. Anyone with access to your Backstage deployment will be able to make requests to the upstream service using the injected credentials. It is recommended that you instead create a backend plugin that forwards individual requests to the upstream service in a secure way. In case you do end up injecting credentials into upstream requests, be sure that you are not exposing any sensitive information or actions. You should also restrict the access as much as possible, for example using the `allowedMethods` option to limit the methods that can be used, and using tokens with the minimum required authorization scope.